阅读《正则表达式必知必会》小册子,做一点摘要,以备用查之。
必备网站
正则表达式作用
查找或操作字符串
操作符
| 操作符 | 功能 | 示例 |
|---|---|---|
| . | 匹配任何单个字符 | |
| [ ] | 匹配多个字符的某一个 | |
| [ 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:] | 空格或制表符\t |
| [: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