常见的正则表达式
正则表达式
https://blog.csdn.net/lxcnn/article/details/4756030
贪婪模式 vs 非贪婪模式
- 贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配
- 非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配
贪婪模式量词 |
非贪婪模式量词 |
{m,n} |
{m,n}? |
{m} |
{m}? |
? |
?? |
* |
*? |
+ |
+? |
常用匹配
匹配公式 |
说明 |
^cat$ |
只包含cat的行 |
^$ |
空行 |
^ |
无意义 |
[0-9] |
匹配数字 |
[a-z] |
匹配小写字母 |
[A-Z] |
匹配大写字母 |
1. 正则表达式语法
常用字符
表示法 |
描述 |
实例 |
literal |
匹配文本字符串的字面值 literal |
foo |
re1 | re2 |
匹配正则表达式 re1 或者 re2 |
foo|bar |
. |
匹配任何单个字符(除了\n 之外) |
b.b |
^ |
匹配字符串起始部分 |
^Dear |
$ |
匹配字符串终止部分 |
/bin/*sh$ |
* |
匹配 0 次或者多次前面出现的正则表达式 |
[A-Za-z0-9]* |
+ |
匹配 1 次或者多次前面出现的正则表达式 |
[a-z]+.com |
? |
匹配 0 次或者 1 次前面出现的正则表达式 |
goo? |
{N} |
匹配 N 次前面出现的正则表达式 |
[0-9]{3} |
{M,N} |
匹配 M~N 次前面出现的正则表达式 |
[0-9]{5,9} |
[...] |
匹配来自字符集的任意单一字符 |
[aeiou] |
[..x−y..] |
匹配 x ~ y 范围中的任意单一字符 |
[0-9], [A-Za-z] |
[^...] |
不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) |
[^aeiou] ,[ ^A-Za-z0-9] |
(...) |
匹配封闭的正则表达式,然后另存为子组 |
|
\ |
转义字符 |
\* 匹配 * |
特殊字符
特殊字符 |
说明 |
\number |
|
\A |
只匹配字符串开始 |
\Z |
只匹配字符串尾 |
\b |
匹配单词开始或结尾的位置 |
\B |
匹配空字符串,但不能在词的开头或结尾 |
\d |
匹配任何十进制数字,与[0-9]一致 |
\D |
匹配任何非十进制数字的字符 |
\s |
匹配任何空格字符,与[\n\t\r\v\f]相同 |
\S |
匹配任何非空格字符 |
\w |
匹配任何字母数字字符,与[A-Za-z0-9_]相同 |
\W |
匹配任何不是单词字符的字符 |
扩展表示
()
及反向应用
括号能够记忆其中子表达式匹配的文本,不论这些文本是什么,\1
都能记住它们,\1
,\2
分别表示第一,第二组括号匹配的文本。
([a-z])([0-9])\1\2 # \1表示[a-z]匹配的内容,\2表示[0-9]匹配的内容
\<
与\>
元字符序列
分别用来匹配单词的开头和结束位置
\<cat # 匹配单词的开头部分cat
cat\> # 匹配单词的结尾部分cat