阅读《正则表达式必知必会》小册子,做一点摘要,以备用查之。
必备网站
正则表达式作用
查找或操作字符串
操作符
操作符 | 功能 | 示例 |
---|---|---|
. | 匹配任何单个字符 | |
[ ] | 匹配多个字符的某一个 | |
[ 0-9A-Za-z] | 利用字符集合区间 | |
^ | 取非匹配 | [^0-9] |
+ | 匹配一个或多个连续的字符 | |
* | 匹配零个或多个连续的字符 | |
? | 匹配零个或一个字符 | https?匹配http和https |
{6} | 匹配重复次数 | [[:xdigit:]]{6} |
{2,4},{3,} | 匹配重复次数设定区间 | |
*?、+?、{n, }? | 懒惰型元字符 | |
\b | 匹配单次的开始或结尾 | \bcap 匹配cape不匹配recap |
\B | 不匹配单次的开始或结尾 | |
^ | 定义字符串开头 | |
$ | 定义字符串结尾 | |
(?m) | 分行匹配 | |
( ) | 子表达式 | ( ){2, } 或 (19‘竖线’20)\d{2} |
(?= ) | 向前查找 | .+(?=:)匹配https:// 中的https ,注意没有冒号 |
(?<= ) | 向后查找 | |
(?! ) | 负向前查找 | 向前查找不与给定模式匹配的文本 |
(?<! ) | 负向后查找 | |
|特殊字符转义 | \[ |
回溯
回溯中的引用 例如: [ ]+(\w+)[ ]+\1
匹配 and and
。
回溯中的替换 正则表达式 (\d{3})(-)(\d{3})(-)(\d{4})
替换 ($1) $3-$5
将313-555-1234
替换成(313) 555-1234
回溯中的条件 (aaaa)? (?(1)aaaa)
\d{5}(?(?=-)=\d{4})
匹配22222
, 44444-4444
但不匹配33333-
回溯中的替换的大小写
例如: 正则表达式 (<[Hh]1>)(.*?)(</[Hh]1>)
替换 $1\U$2\E$3
将<h1></h1>
之间内容转成大写
操作符 | 说明 |
---|---|
\E | 结束\L或\U的转换 |
\l | 把下一个字符转换成小写 |
\L | 把\L到\E之间的字符全部转换成小写 |
\u | 把下一个字符转换为大写 |
\U | 把\U到\E之间的字符全部转换为大写 |
特定字符类别
操作符 | 说明 |
---|---|
\d | 任何一个数字字符,等价于[0-9] |
\D | 任何一个非数字字符,等价于[^0-9] |
\w | 任何一个字母数字字符(大小写均可)或下划线,等价于[a-zA-Z0-9_] |
\W | 任何一个非字母数字或下划线字符,等价于[^a-zA-Z0-9_] |
\s | 任何一个空白字符,等价于[\f\n\r\t\v] |
\S | 任何一个非空白字符,等价于[^\f\n\r\t\v] |
POSIX字符类
字符类 | 说明 |
---|---|
[:alnum:] | 任何一个字母或数字[a-zA-Z0-9] |
[:alpha:] | 任何一个字母 |
[:blank:] | 空格或制表符 |
[:cntrl:] | ASCII控制字符(ASCII 0到31,在加上ASCII 127) |
[:digit:] | 任何数字 |
[:graph:] | 和[:print:]一样,但不包括空格 |
[:lower:] | 任何小写字母 |
[:print:] | 任何可打印字符 |
[:punct:] | 既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符 |
[:space:] | 任何一个空白字符,包括空格 |
[:upper:] | 任何一个大写字母 |
[:xdigit:] | 任何一个十六进制数字[a-fA-F0-9] |
空白字符
元字符 | 说明 |
---|---|
\b | 回退(Backspace) |
\f | 换页 |
\n | 换行 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
备注
- 正则表达式区分大小写
- DOS或windows系统文件路径是 反斜杠 Linux或Unix为正斜杠 /
- 匹配十六进制值 eg: \x0A 对应于ASCII字符10,效果等价于\n
- 匹配八进制值 eg: \011 对应于ASCII字符9,效果等价于\t