问题:你如何将元字符转成普通字符一样?
答:有两种方法:
- 用反斜杠(
\
)前面的元字符; - 将元字符括在引号表达式中
\Q
(在开头)和\E
(在结尾处)Pattern.quote("表达式") 将输入序列中的元字符或转义序列转义成普通字符 如:Pattern.quote(".*+foo"); //返回 \Q.*+foo\E
贪婪 |
懒惰 |
独占 |
X? |
X?? |
X?+ |
X* |
X*? |
X*+ |
X+ |
X+? |
X++ |
X{n} |
X{n}? |
X{n}+ |
X{n,} |
X{n,}? |
X{n,}+ |
X{n,m} |
X{n,m}? |
X{n,m}+ |
?/*/+只修饰一个字符时 根据前导字符去匹配尽可能多的内容 贪婪,匹配多的,匹配不上了就回溯 |
(对两个或以上的字符后添加)? 匹配最少项 记忆 :问号,对于有没有不知道 所以是0/1 ,有没有都行不就是懒惰吗 |
(对两个或以上的字符后添加)+ 与贪婪类似,区别就是不回溯,会导致“独占失败”,没有匹配上 记忆: “+ 表示必须有一 “即独占 |
? +
0 ————> 1——————————————————>
^ 开始 * $ 结束
0————————————————————————>
匹配次数 | 正则表达 |
=n | {n} |
>=n | {n,} |
[n,m] | {n,m} |
括号 |
(pattern) 匹配并捕获 |
(?:pattern) | 匹配 pattern 但不捕获该匹配的子表达式 |