字符 |
含义 |
\n |
换行符 |
\t |
制表符 |
|\本身 |
^,$,\.等 |
本身 |
\d |
0-9中任何一个数字 |
\w |
A-Z,a-z,0-9,_中任何一个 |
\s |
空格、制表符、换行符等空白字符 |
. |
匹配任何一个字符,如果要匹配包括“\n”在内所有字符,一般用[\s\S] |
自定义字符集合
字符 |
含义 |
[a1#] |
a或1或# |
[^a1] |
除了a,1 |
[a-d] |
a-d中任意一个 |
[^A-B0-2] |
除了A-B,0-2的任意字符 |
量词
字符 |
含义 |
{n} |
表达式重复n次 |
{m,n} |
表达式至少重复m次,最多重复n次 |
{m,} |
表达式至少重复m次 |
? |
匹配表达式0次或者一次,相当于{0,1} |
+ |
表达式至少出现1次,相当于{1,} |
* |
表达式不出现或出现任意次,相当于{0,} |
- 贪婪模式(匹配字符越多越好,默认)
- 非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后加“?”)
字符边界
字符 |
含义 |
^ |
字符串开始的地方匹配 |
$ |
字符串结束的地方匹配 |
|
\b |
匹配一个单词边界 |
- 匹配的不是字符是位置
- -b:前面的字符和后面的字符不全是\w
匹配模式
模式 |
描述 |
IGNORECASE 忽略大小写模式 |
- 匹配时忽略大小写 |
|
- 默认情况下,正则表达式区分大小写 |
SINGLELINE 单行模式 |
- 整个文本看作一个字符串,只有一个开头一个结尾 |
|
- 使“.”可以匹配包含换行符在内的任意字符 |
MULTILINE 多行模式 |
- 每行都是一个字符串 |
|
- 如果仅匹配字符串开始和结束位置可以使用\A和\Z |
选择符和分组
表达式 |
分组 |
"中分线"分支结构 |
左右两边表达式之间或关系,匹配左边或右边 |
()捕获组 |
1. 在修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 |
|
2.取匹配结构的时候,括号中的表达式匹配到的内容可以被单独得到 |
|
3. 每一对括号会分配一个编号,使用()捕获根据左括号的顺序从1开始自动编号。捕获元素编号为零的第一个捕获是由正则表达式模式匹配的文本 |
(?:Expression)非捕获组 |
一些表达式中,不得不使用(),但有不需要保存()中子表达式匹配的内容,可以使用非捕获组来抵消()带来的副作用 |
反向引用(\nnn)
- 每一对()会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号
- 通过反向引用,可以对分组已捕获的字符串进行引用
预搜索(零宽断言)
- 只进行子表达式的匹配,匹配内容不计入最终的匹配结果,零宽度
- 这个位置应该符合某个条件。判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。是对位置的匹配
- 匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结构中,那就认为这个子表达式是占有字符的;如果自表达式匹配的仅仅是位置,或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。占有字符还是零宽度,是针对匹配的内容是否保存到最终的匹配结构中而言的。
表达式 |
描述 |
(?=exp) |
断言自身出现的位置的后面能匹配表达式exp |
(?<=exp) |
断言自身出现的位置的前面能匹配表达式exp |
(?!exp) |
断言此位置的后面不能匹配表达式exp |
(?<exp) |
断言此位置的前面不能匹配表达式exp |
java中的使用
Pattern p = Pattern.complie(r,int);
Matcher m = p.matcher(str);
正则表达式了解一下基本的就好哇咔咔,网上已经有炒鸡多已经写好了的啊哈哈哈。所以,了解了解一下。(●'◡'●)