正则表达式(regular expression):一些用来匹配和处理文本的字符串。主要功能为搜索和替换
一、基本的元字符
元字符 | 说明 |
---|---|
. | 匹配任意单个字符 |
| | 逻辑或操作符 |
[] | 匹配字符集合中的一个字符 |
[^] | 对字符合集求非 |
- | 定义一个区间(例如[A-Z]) |
\ | 对下一个字符转义 |
二、数量元字符
元字符 | 说明 |
---|---|
* | 匹配前一个字符(子表达式)的零次或多次重复 |
*? | *的懒惰型版本 |
+ | 匹配前一个字符(子表达式)的一次或多次重复 |
+? | +的懒惰型版本 |
? | 匹配前一个字符(子表达式)的零次或一次重复 |
{n} | 匹配前一个字符(子表达式)的n次重复 |
{m, n} | 匹配前一个字符(子表达式)至少m次且至多n次重复 |
{n, } | 匹配前一个字符(子表达式)n次或更多次重复 |
{n, }? | {n, }的懒惰型版本 |
三、位置元字符
元字符 | 说明 |
---|---|
^ | 匹配字符串的开头 |
\A | 匹配字符串的开头 |
$ | 匹配字符串的结束 |
\Z | 匹配字符串的结束 |
\< | 匹配单词的开头 |
\> | 匹配单词的结束 |
\b | 匹配单词边界(开头和结束)boundary |
\B | \b的反义 |
四、特殊字符元字符
元字符 | 说明 |
---|---|
[\b] | 退格字符 |
\c | 匹配一个控制字符 |
\d | 匹配任意数字字符 |
\D | \d的反义 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\s | 匹配一个空白字符 |
\S | \s的反义 |
\t | 制表符(Tab字符) |
\v | 垂直制表符 |
\w | 匹配任意字母数字字符或下划线字符 |
\W | \w的反义 |
\x | 匹配一个十六进制数字 |
\0 | 匹配一个八进制数字 |
五、回溯引用和前后查找
元字符 | 说明 |
---|---|
() | 定义一个子表达式 |
\1 | 匹配第一个子表达式;\2表示匹配第2个表达式,以此类推 |
?= | 向前查找 |
?<= | 向后查找 |
?! | 负向前查找 |
?<! | 负向后查找 |
?() | 条件(if then) |
?()| | 条件(if then else) |
六、大小写转换
元字符 | 说明 |
---|---|
\E | 结束\L或\U转换 |
\l | 把下一个字符转换为小写 |
\L | 把后面的字符转换为小写, 直到遇见\E为止 |
\u | 把下一个字符转换为大写 |
\U | 把后面的字符转换为大写, 直到遇见\E为止 |
七、一些特例的正则匹配
1.IP地址的正确匹配
任何一个1位或2位数字
任何一个以1开头的3位数字
任何一个以2开头、第二位数字在0~4之间的3位数字
任何一个以25开头、第3位数字在0~5之间的3位数字
2. HTML标题匹配(回溯匹配)
- 保持前后一致,过滤掉错误的标签
3.邮件地址的匹配
- 可以有任意多个字符
- 第一个字符必须是一个字母或数字字符
4.url的匹配
- 解决http和https同时匹配的问题