字符 | 描述 |
text | 匹配text字符串 |
. | 匹配除换行符之外的任意一个单个字符 |
^ | 匹配一个字符串的开头 |
$ | 匹配一个字符串的末尾 |
在正则表达式中,我们还可用匹配限定符来约束匹配的次数
2. 匹配限定符
最大匹配 | 最小匹配 | 描述 |
* | *? | 重复匹配前表达式零次或多次 |
+ | +? | 重复匹配前表达式一次或多次 |
? | ?? | 重复匹配前表达式零次或一次 |
{m} | {m}? | 精确重复匹配前表达式m次 |
{m,} | {m,}? | 至少重复匹配前表达式m次 |
{m,n} | {m,n}? | 至少重复匹配前表达式m次,至多重复匹配前表达式n次 |
据上所述,”.*”为最大匹配,能匹配源字符串所有能匹配的字符串.”。*?"为最小匹配,只匹配第一次出现的字符串。如:d。*g能匹配任意以d开头,以g结尾的字符串,如”debug”和"debugging”,甚至"dog is walking”。而d。*?g只能匹配”debug",在”dog is walking"字符串中,则只匹配到"dog ”。
在一些更复杂的匹配中,我们可用到组和运算符。
3.组和运算符
组 | 描述 |
[。..] | 匹配集合内的字符,如[a-z],[1—9]或[,。/;’] |
[^...] | 匹配除集合外的所有字符,相当于取反操作 |
A|B | 匹配表达式A或B,相当于OR操作 |
(。.。) | 表达式分组,每对括号为一组,如([a-b]+)([A—Z]+)([1-9]+) |
\number | 匹配在number表达式组内的文本 |