结构
RegEX
- 写出正则匹配字符串
1 | `String regEx = "匹配式"; |
Pattern
1 | `Pattren pattern = Pattern.compile(regEx); |
Matcher
1 | `Matcher matcher = pattern.matcher('主串') |
Matcher 类中的 find() 方法
- **
Mather定义了int[] group**属性来记录所匹配到的元素的下标,初始数组大小为20。 - 在**
简单的正则匹配中find**每进行一次会执行以下操作:- 匹配到符合元素
- 将匹配到的元素的起索引记录到**
group[0]中,末索引+1记录到group[1]当中去 ,(group[]**每次都会刷新) - 用**
oldLast**来记录末索引使其下次直接从此位置开始匹配
- 在有**
分组-用括号来分组的情况下的正则匹配中find**每进行一次会执行以下操作:- 匹配到符合元素
- 将匹配到的元素的起索引记录到**
group[0]中,末索引+1记录到group[1]当中去 ,(group[]每次都会刷新),将第一组匹配到的元素下标寄宿在group[2]中,第一组末索引+1记录到group[3]**当中去,依此类推 - 用**
oldLast**来记录末索引使其下次直接从此位置开始匹配
Matcher 类中的 group()方法
group()进行操作大概就是return substr(group[2*index],group[2*index+1])
循环查找
1 | `while(matcher.find()){ |
元字符
- 转义字符的正确使用
\\
限定符

?、*、+、{}都只对离他最近的产生作用

- 它们都会尽可能的匹配多的**
贪婪匹配** - 如果在其之后还加一个
?就变为**非贪婪匹配**
选择匹配符
|连接两个正则表示或
分组组合和反向引用符
特殊字符
字符匹配符


\\w还包括_\\s匹配任何空白字符(空格,制表符等)\\S与\\s相反- 案列:匹配一个字符串abc
- 不区分大小写**
(?i)abc或Pattern pat = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE)**也可以 - bc不区分**
a(?i)bc** - 仅b不区分a((?!)b)c
- 不区分大小写**
定位符

分组
捕获分组

非捕获分组
- 即没有group[2]、[3]之类的储存

反向引用
(\\d)\\n
1 | String reg = "//d{5}[-](//d)//1{2}(//d)//2{2}(//d)//3{2}" |
1 | mather.replaceAll("$1")就是第一个括号的外部使用 |