正则表达式匹配时,一般考虑用到有限状态机,如《剑指offer》面试题19。
将一些常用正则表达式整理如下:
\ | 将下一个字符标记符、或一个向后引用、或一个八进制转义符。 |
^ | 匹配字符串的开始位置。 |
$ | 表示匹配字符串的结束位置。 |
* | 匹配前面的子表达式任意次。零次到多次。 |
+ | 匹配前面的子表达式一次或多次(>=1次)。 |
? | 匹配前面的子表达式零次或一次。 |
{ } | 大括号用于限定匹配次数,如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m。 |
. | 匹配除“\n”和"\r"之外的任何单个字符。 |
( ) | 小括号表示匹配括号中全部字符。 |
x|y | 匹配x或y。 |
[ ] | 字符集合。中括号表示匹配括号中一个字符。 |
\d | 匹配一个数字字符。 |
\D | 匹配一个非数字字符。 |
\w | 匹配包括下划线的任何单词字符。 |
\W | 匹配任何非单词字符。 |
\xn | 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。 |
\n | 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。 |