正则表达式及其示例课件_第1页
正则表达式及其示例课件_第2页
正则表达式及其示例课件_第3页
正则表达式及其示例课件_第4页
正则表达式及其示例课件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

正则表达式及其示例课件边界匹配器^行的开头$行的结尾\b\B非单词边界\A输入的开头\G上一个匹配的结尾\Z输入的结尾,仅用于最后的结束符(如果有的话)

\z输入的结尾字符x

字符x

\\反斜线字符

\t制表符('\u0009')\n新行(换行)符('\u000A')\r回车符('\u000D')\f换页符('\u000C')\a报警(bell)符('\u0007')\e转义符('\u001B')\cx

对应于x

的控制符字符类[abc]a、b或c(简单类)[^abc]任何字符,除了a、b或c(否定)[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)[a-d[m-p]]a到d或m到p:[a-dm-p](并集)[a-z&&[def]]d、e或f(交集)

[a-z&&[^bc]]a到z,除了b和c:[ad-z](减去)[a-z&&[^m-p]]a到z,而非m到p:[a-lq-z](减去)预定义字符类.任何字符(与行结束符可能匹配也可能不匹配)\d数字:[0-9]\D非数字:[^0-9]\s空白字符:[\t\n\x0B\f\r]\S非空白字符:[^\s]\w单词字符:[a-zA-Z_0-9]\W非单词字符:[^\w]Greedy数量词X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好n

次X{n,}X,至少n

次X{n,m}X,至少n

次,但是不超过m

次Logical运算符XY

X

后跟Y

X|Y

X

或Y

(X) X,作为捕获组字符类运算符的优先级如下所示,按从最高到最低的顺序排列:1

字面值转义

\x2

分组[...]3

范围a-z4

并集[a-e][i-u]5

交集[a-z&&[aeiou]]组和捕获

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式((A)(B(C)))中,存在四个这样的组:1

((A)(B(C)))2

\A3

(B(C))4

(C)组零始终代表整个表达式。之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列。捕获的子序列稍后可以通过Back引用在表达式中使用,也可以在匹配操作完成后从匹配器获取。正则表达式中组的概念()\n

任何匹配的nth

捕获组捕获组可以通过从左到右计算其开括号来编号。例如,在表达式((A)(B(C)))中,存在四个这样的组:1

((A)(B(C)))2

\A3

(B(C))4

(C)组零始终代表整个表达式。

((A)(B(C)))\1表示第一个括号

$1另参数引用1234从左向右的顺序匹配-校验手机号例如Stringregux=“1[358][0-9]{9}”;booleanb=tel.matchs(gre);System.out.println(b);也可将regux=“1[358]\\d{9}”;切割

Stringtel=“zhangsanlisiwangwu”;Stringregux=“+”;String[]names=tel.split(regux);for(Stringname:names)System.out.println(name);也可以写成Stringregux=“\\s+”;正则表达式切割Stringtel=“zhangsanttttlisigggggggwangwu”;Stringregux=“(.)\\1+”;String[]names=tel.split(regux);for(Stringname:names)System.out.println(name);()表示组\1表示第一组(第一个括号的内容,需要转移)正则表达式替换将重复的字符替换成#号Stringstr=“zhangsanttttlisigggggggwangwu”;str=str.replaceAll(“(.)\\1+,”#”);System.out.println(str1);将重复的字符换成单个

Stringstr=“zhangsanttttlisigggggggwangwu”;str=str.replaceAll(“(.)\\1+”,”$1”);System.out.println(str1);”$1”的意思是获取前一个参数中的第一组号码部分位数替换为****

效果*****252tel=tel.replaceAll(“(\\d{3})\\d{5}(\\d{3})”),”$1*****$2”;System.out.println(tel);正则表达式获取Patternp=Patternpile("a*b");将正则规则进行对象的封装Matcherm=p.matcher("aaaaab");通过正则对象的Matcher方法与字符串相关联。获取要对字符串操作的匹配器对象Matcher方法。booleanb=m.matches();通过匹配器对象方法对字符串进行操作。Stringwords=“Thereisadogonthedesk!”;Stringregex=“\\b[a-z]{3}\\b”;需有单词边界//将正则封装成对象Patternp=Patternpile(regex);//通过正则表达式获取匹配器对象Matcherm=p.matcher(words);//使用Matcher方法对字符串进行操作While(m.find())System.out.println(m.group());基本方法

intstart()

返回以前匹配的初始索引。String

replaceAll(String

replacement)

String

group()

返回由以前匹配操作所匹配的输入子序列intend()

返回最后匹配字符之后的偏移量。booleanfind()

尝试查找与该模式匹配的输入序列的下一个子序列。/*将“口吃”的话,改为正常*/

publicstaticvoiddemo_one(){Stringstr="给...给....我....的的的的的...手手手手手机";//将其中的逗号去掉str=str.replaceAll("(\\.)+","");System.out.println(str);//去掉重复的汉字str=str.replaceAll("(.)\\1+","$1");System.out.println(str);}}ip地址排序

publicstaticvoiddemo_two(){Stringstr="122.64.240.233.3.23.3255.15.35.255211.64.240.64";//补零str=str.replaceAll("(\\d+)","00$1");//防止位数高于三位取后三位(高出的位数都是零)str=str.replaceAll("0+(\\d{3})","$1");//将每个ip地址分隔开来String[]ips=str.split("+");//添加到集合TreeSet<String>ipsort=newTreeSet<String>();for(Stringip:ips){ipsort.add(ip);}//打印原有IP地址for(Stringip:ipsort){System.out.println(ip.replaceAll("0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论