简单探讨下正则表达式的语法规则:
1.普通字符
字母、数字、汉字、下划线,以及没有被定义特殊意义的标点符号,都是 "普通字符"。
说明:"普通字符" 在匹配时,匹配与之相同的一个字符。
如果一个表达式中,所有的字符都是 "普通字符",那么这个表达式的匹配操作,实际上就是一个普通的 "字符串查找" 操作。
2.简单转义字符"\"
\n:换行符 = \x0A
\r:回车符 = \x0D
\t:制表符 = \x09
有些被定义了特殊的意义,因而需要在前面添加 "\" 来匹配该字符本身的标点符号:
^ | $ | ( ) | [ ] | { } | . | ? | + | * | | |
举例:要匹配第一列 "^" 字符本身,请使用 "\^",其他类似
3.自定义字符集合 [ ]
自定义字符类 | 代表意思 |
[abc] | a、b 或 c(简单类) |
[^abc] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
说明
可以匹配 "多个字符" 其中任意一个字符的正则表达式。虽然是 "多个字符",但每次只能匹配其中一个。
4.预定义字符类
预定义字符类 | 代表意思 |
. | 任何字符(与结束字符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
5.边界匹配器
边界匹配器 | 代表意思 |
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词边界 |
说明
本身不匹配任何字符,只对字符边界和字符间缝隙附加条件的表达式。
6.匹配次数限定符
说明
可使被修饰的表达式重复固定次数,也可以限定一定的重复匹配的次数范围。
7.分组()
用括号 ( ) 将其他表达式包含,可以使被包含的表达式组成一个整体,在被修饰匹配次数时,可作为整体被修饰。
另外,用括号包含的表达式,所匹配到的内容将单独作记录,匹配过程中或结束后可以被获取。
说明
每一对括号会分配一个编号,使用 () 的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。