当前位置: 首页 > news >正文

网站营销代理手机网页版

网站营销代理,手机网页版,网站社区的建设,鲜花网站建设项目策划书简介 我们一般使用正则表达式是用来处理字符串的#xff0c;不管是实际的开发中还是我们的算法竞赛中#xff0c;使用正则表达式绝对可以大大提升我们的效率。 正则表达式#xff08;regular expression#xff09;其实就是对字符串进行模式匹配的技术。 快速入门 我们这里…简介 我们一般使用正则表达式是用来处理字符串的不管是实际的开发中还是我们的算法竞赛中使用正则表达式绝对可以大大提升我们的效率。 正则表达式regular expression其实就是对字符串进行模式匹配的技术。 快速入门 我们这里演示一个案例使用正则表达式匹配下面字符串中的所有英文单词 import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexDemo01 {public static void main(String[] args) {String content 1995年互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的 静态网页能够“灵活”起来急需一种软件技术来开发一种程序这种程序可以通过 网络传播并且能够跨平台运行。于是世界各大IT企业为此纷纷投入了大量的人力 、物力和财力。这个时候Sun公司想起了那个被搁置起来很久的Oak并且重新审 视了那个用软件编写的试验平台由于它是按照嵌入式系统硬件平台体系结构进行编 写的所以非常小特别适用于网络上的传输系统而Oak也是一种精简的语言程 序非常小适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页 在网络上传输的AppletApplet是一种将小程序嵌入到网页中进行执行的技术 并将Oak更名为Java。5月23日Sun公司在Sun world会议上正式发布Java和 HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软 等各大公司都纷纷停止了自己的相关开发项目竞相购买了Java使用许可证并为自 己的产品开发了相应的Java平台。;// 提取文章中所有英文单词Pattern pattern Pattern.compile([a-zA-Z]);Matcher matcher pattern.matcher(content);while (matcher.find()){// 匹配到的内容都会放到 matcher.group(0)里面System.out.println(matcher.group(0));}} }运行结果  Oak IT Sun Oak Oak Sun Applet Applet Oak Java Sun Sun world Java HotJava IBM Apple DEC Adobe HP Oracle Netscape Java Java 同理如果我们想要获取字符串中所有的数字、获取字符串中所有字符串或者数字只需要这样修改 Pattern pattern Pattern.compile([0-9]);Pattern pattern Pattern.compile(([0-9])|([a-zA-Z])); 要知道我们自己实现的话会很复杂我自己尝试过比如实现提取所有英文字符我们需要这样来设计 把字符串转为 char 数组遍历数组判断字符的 ASCII码是否在 [a,z] , [A,Z]范围内判断英文字符前的字符是否为非英文字符如果是在字符前添加空格防止结果连成一片判断英文字符后的字符是否为非英文字符如果是在字符后添加空格防止结果连成一片 可以看到我们自己编写程序去实现确实是十分复杂所以为什么不学习正则表达式呢取英文字符是比较简单的案例如果遇到验证邮箱、手机号、身份证号、ip地址、提取字符串等需要各种字符串处理算法的时候手写算法是十分烧脑的最好的办法就是找到规律使用正则表达式提高开发效率 除此之外我们学习的网络爬虫在做数据处理的时候比如各种新闻标题、产品标题、商品评论这些文本通常都是在超链接或者一些特殊标签内部这时候我们直接使用正则表达式就可以很轻松地实现标签内文本的提取这样我们只需要专心爬虫的代码而不需要过于担心爬到数据后的数据处理问题了。 底层实现 我们这里主要讨论一下 Java正则表达式中matcher.find() 和 matcher.group(int group) 的底层是怎么实现的。 案例 找出四个数字连在一起的子串 1998年12月8日第二代Java平台的企业版J2EE发布。1999年6月Sun公司发布了第二代Java平台简称为 Java2的3个版本J2MEJava2 Micro EditionJava2平台的微型版应用于移动、无线及有限资源的 环境J2SEJava 2 Standard EditionJava 2平台的标准版应用于桌面环境J2EEJava 2Enterprise EditionJava 2平台的企业版应用3443于基于Java的应用服务器。Java 2平台的发布 是Java发展过程中最重要的一个里程碑标志着Java的应用开始普及9889 代码 // 1. 找出四个数字连在一起的子串// \\d 代表数字String regex \\d\\d\\d\\d;Pattern pattern Pattern.compile(regex);Matcher matcher pattern.matcher(content);while (matcher.find()){System.out.println(matcher.group()); // 无参时默认就是 group(0)} 输出结果 1998 1999 3443 9889 我们开始分析代码以及通过debug分析源码 matcher.find() matcher.group() 原理 matcher.group(0) 首先根据我们给它的规则去匹配定位到满足要求的子字符串位置比如1998然后将子字符串的开始的索引记录到 matcher 对象的属性中去int[] groups。  groups[0] 0 , 把该子字符串结束的索引1的值记录到 groups[1]中去groups[1] 4。 我们Matcher类的属性 int[] groups 的初始大小为 20 初始值均为 -1.  同时记录属性oldLast 的值为 该子字符串结束的索引1的值 即 4即下次执行matcher.find() 的时候从 4 开始。接下来我们分析 matcher.group(0) 的源码 public String group(int group) {if (first 0)throw new IllegalStateException(No match found);if (group 0 || group groupCount())throw new IndexOutOfBoundsException(No group group);if ((groups[group*2] -1) || (groups[group*21] -1))return null;return getSubSequence(groups[group * 2], groups[group * 2 1]).toString();} 此时我们调用 mactcher.group(0) 的话很明显会返回 getSubSequence(groups[0],groups[1]).toString(); 相当于根据 groups[0]0 和 groups[1]4 记录的位置来截取字符串 注意是左闭右开的 [0,4)。 此时输出 1998. 继续下一次 matcher.find() 方法这次定位到了 1999 这个位置 此时groups[0] 31, groups[1] 35 ,oldLast 35 。同样再次调用 matcher.group(0) , 输出 1999。 到这里我们基本了解了 group(0) 的含义每次调用matcher.group(0) 它都会去查找字符串中的子串首尾下标这些下标存在 groups数组中 而且首下标永远都是 groups[0] 尾下标永远都是 groups[1] 。 但是如果我们调用的是 group(1)、或者group(n) 又会是怎样的情况呢 matcher.group(n) 其实group(n) 涉及到的是一个分组的概念体现在代码中的匹配语句上就是括号我们对上面的匹配语句做一个修改 String regex (\\d\\d)(\\d\\d);Pattern pattern Pattern.compile(regex);Matcher matcher pattern.matcher(content);while (matcher.find()){System.out.println(matcher.group()); // 无参时默认就是 group(0)System.out.println(matcher.group(1));System.out.println(matcher.group(2));} 输出结果 group(0) 1998 group(1) 19 group(2) 98 group(0) 1999 group(1) 19 group(2) 99 group(0) 3443 group(1) 34 group(2) 43 group(0) 9889 group(1) 98 group(2) 89 此时我们再从 matcher.find()  开始分析 首先根据我们给它的规则去匹配定位到满足要求的子字符串位置比如(19)(98)然后将子字符串的开始的索引记录到 matcher 对象的属性中去int[] groups。  groups[0] 0 , 把该子字符串结束的索引1的值记录到 groups[1]中去groups[1] 4。记录1组()匹配到的子串下标到 groups[2] 0 , groups[3] 2。记录2组()匹配到的子串下标到 groups[4] 2 , groups[5] 4。如果还有更多组以此类推... 到这里我们基本了解了分组的实现原理groups数组负责存储子字符串的下标以及子字符串内每组子串的首尾下标我们的 getSubSequence(groups[group * 2], groups[group * 2 1]) 方法会去根据 matcher.group(int group) 给的参数 group 去查找对应groups数组的首尾下标从而调用String.substring(start,end) 截取出每组对应的子串。 不得不说getSubSequence(groups[group * 2], groups[group * 2 1])这个参数的设置确实十分巧妙 总结 如果正则表达式中有() 即分组 取出匹配的字符串规则如下 group(0) 代表匹配到的子字符串不分组group(1) 代表匹配到的子字符串第1组group(2) 代表匹配到的子字符串第2组...但是参数不能越界不能超过分组数
http://www.pierceye.com/news/328076/

相关文章:

  • 中国建设第一平台网站网络网站建设10大指标
  • 书画院网站源码网站主题模板下载不了
  • 邢台制作网站网上申报流程
  • 做网站的困难做的网站有营销效果吗
  • 高端集团网站建设公司做网站开发的有外快嘛
  • 网站服务器防火墙设置惠州网络推广公司哪家好
  • 做网站根据内容生成pdfwordpress自媒体二号
  • 临沂网站开发不会写代码怎么做网站
  • 怎么做加密货币网站wordpress 多域名登陆
  • 做网站的过程做网站公司广州
  • 女人动漫做受网站wordpress如何作页面
  • 做网站导航栏素材图建筑设计网站制作
  • 淘宝的网站建设方案国家为何要求所有网站均须备案
  • 企业网站模板下载哪家公司强温州建设公司网站
  • 网站编辑能在家做wordpress 做的商城
  • 空间信息网站开发公司工程项目质量安全管理体系
  • 网站流量被黑包装回收网站建设
  • 网站拒绝被百度收录成品网站1688特色
  • 深圳住房和建设局网站官网打不开WordPress 斗鱼
  • 纯文本网站连接西宁圆井模板我自己做的网站
  • 职业院校专题建设网站wordpress文章版权投诉
  • 网站改版好吗如何解决旅游网站建设问题
  • 爱站网使用的是什么网站模仿网站页面违法吗
  • 做民宿的网站wordpress 短信平台
  • 婚恋网站上认识人 带你做原油交易怎么用手机创造网站
  • 网站建设投标书服务方案范本天津北京网站建设公司
  • 网站建设好评公司微企点建站怎么样
  • 某网站开发项目成本估计推广普通话作文500字
  • 制作网站需要哪些工作网站建设佰金手指科杰十三
  • 外贸哪家做网站wordpress excel搜索