ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式

2020-06-30 11:53:22  阅读:220  来源: 互联网

标签:字符 abc group 正则表达式 Matcher ab 匹配


B 指定字符B
\xhh 十六进制值为0xhh的字符
\uhhhh 十六进制表现为0xhhhh的Unicode字符
\t 制表符Tab
\n 换行符
\r 回车
\f 换页
\e 转义(Escape)
表达式含义
. 任意字符
[abc] 包含abc的任何字符(和`a
[^abc] abc之外的任何字符(否定)
[a-zA-Z] az或从AZ的任何字符(范围)
[abc[hij]] abchij中的任意字符(与`a
[a-z&&[hij]] 任意hij(交)
\s 空白符(空格、tab、换行、换页、回车)
\S 非空白符([^\s]
\d 数字([0-9]
\D 非数字([^0-9]
\w 词字符([a-zA-Z_0-9]
\W 非词字符([^\w]

1. String.match(正则) 可以返回true或者false

2. String.split 可以将字符串从正则匹配的地方切开

3. String.replaceAll和replaceFirst 都可以使用正则

4. +代表一次或多次 ?代表0次或一次 *代表0次或多次

5. 第一个如果不加? 是贪婪模式 那么匹配到的就有两个group 加问号和第二个一样   第二个就是4个group

Matcher m1 = Pattern.compile("(abc)+?").matcher("abcabcabcdefabce")   匹配abc这个整体

Matcher m2 = Pattern.compile("abc+").matcher("abcabcabcdefabce");     匹配abc c这个字符越多越好

6.Matcher.find 如果不传参数 就是每次返回true/false代表是否匹配上 如果传参数代表从字符串的某个下标开始匹配

   Matcher.group 可以将匹配上的字符串取出来  Matcher.find 每次都会去匹配,所以一般的用法都是:

  while(m.find()) System.out.print(m.group() + " "); 

7.Group 组的概念  组是用括号划分的正则表达式,可以根据组的编号来引用某个组。组号为 0 表示整个表达式,组号 1 表示被第一对括号括起来的组,以此类推。

A(B(C))D  这里有三个组 组 0 是 ABCD,组 1 是 BC,组 2 是 C  

(ab)(c+)(w)? 这里有四个组 组0是ab(c)+(w)? 组1是ab 组2是c+ 组3是w

groupCount 可以查看组的个数 (如果有三个组会返回2)

group 上一次的匹配操作匹配上的数据 匹配第0组(全匹配)

group(int i )  上一次的匹配操作匹配上的数据 匹配第i组 我理解是group(0)匹配上的 然后用当前组的内容再去匹配一次

 

Case1:Matcher m1 = Pattern.compile("((ab)(c+)(w)?)+").matcher("abcccabcabccdefabce"); 

这个case 如果group的结果是abcccabcabcc  但是最后是+ 匹配一次或多次  所以group1、2、3、4的时候是匹配最后一次的结果 也就是abcc

所以group1、2、3、4 分别对应 abcc ab cc null

第一次find的时候调用m1.start() = 0,m2.end() = 12 左闭右开("abcccabcabcc")  start和end还可以传group  如果传group=1  那么start=8,end=12("abcc") 如果group = 3 那么start=10,end=12("cc")

 

标签:字符,abc,group,正则表达式,Matcher,ab,匹配
来源: https://www.cnblogs.com/TheQi/p/13212878.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有