正则表达式入门
2017-07-10 本文已影响90人
435fa00b72e7
正则表达式
- note
-
\d:匹配数字 -
[0-9]:匹配数字(字符组),在[]中对数字进行限定 -
\D:匹配任意一个非数字字符 -
.:通配符用以匹配任意字符(某些情况下不能匹配起始符) -
(\d)\d\1:()捕获分组,并且使用\l进行后向引用 -
{}:元字符 -
*:重复零次或更多次 -
+:重复一次或更多次 -
?:重复零次或一次 -
\b:零宽度断言,非单词边界 -
\B:零宽度断言,单词边界 -
^:标记起始位置,在[]中出现表示取反 -
$:标记结束位置 -
|:多个选择 -
\w:匹配字母或数字或下划线或汉字,等同于[_a-zA-Z0-9]
-
字符简写式.png
-
\s:任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格 -
\:转义字符 -
{n}:重复n次 -
{n,}:重复n次或更多次 -
{n,m}:重复n到m次 -
$1 | $2:后向引用 -
.*?:.? 是一个固定的搭配,.和代表可以匹配任意无限多个字符,
加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,
以后我们还会大量用到.*?的搭配。 - 在
dotall下.会匹配包括换行符在内的所有字符 -
\A \Z:分别为匹配主题词的开头和结尾 -
\Q$\E:之间的都会被认为是普通字符 - (?i):忽略大小写,下面几种等同
-
(?i)(?:the)|(?:(?i)the)|(?i:the)
-
正则表达式中的选项.png
-
grep命令执行正则表达式 -
ERE模式:不需要转义BRE模式:需要转义 -
\l:不匹配任何字符,而是会将紧接其后的字母变为小写 -
\u:将紧接其后的字母变为大写 -
\U:将紧接其后的所有字母变为大写 -
\L:将紧接其后的所有字母变为小写 - 命名分组
-
?<one>和?<two>将分组命名为one和two -
$+{one}和$+{two}引用上述两个分组
-
命名分组的语法.png
- 原子分组用以关闭部分回溯操作
- 并集和差集:
[0-3[6-9]]|[0-3&&[6-9]]
posix字符组.png
- 量词:
- 贪心:匹配整个字符串,寻找尽可能大的,然后进行回溯
- 使用
?,则变成懒惰的,一个个查找 - 使用
+,则变成占有量词,只尝试一次,不会回溯
- 正前瞻,反前瞻,正后顾,反后顾