匹配单个字符的元字符
| 元字符 | 匹配对象
--- | --- | ---
.
| 点号 | 匹配单个任意字符
[ ... ]
| 字符组 | 匹配单个列出的字符
[ ^... ]
| 排除型字符组 | 匹配单个未列出的字符
\char
| 转义字符 | 若char是元字符,或转义序列无特殊含义时,匹配char对应的普通字符
提供计数功能的元字符
| 元字符 | 匹配对象
--- | --- | ---
?
| 问号 | 容许一次匹配但非必需
*
| 星号 | 可以匹配任意多次,也可能不匹配
+
| 加号 | 至少需要匹配一次,至多可能任意多次
{min, max}
| 区间量词(并非所有版本的regex都支持) | 至少需要min次,至多容许max次,也可以使用{m}来匹配固定的次数
?
, *
, +
都是贪婪的,也就说它们会尽可能地匹配更多的字符。
if the Re <.*> is matched against '<H1>title</H1>', it will match the entire string, and not just '<H1>
为了解决这个问题,可以加上?
转化成非贪婪模式, 使用<.*?>
来匹配尽可能少的字符。*?
, +?
, ??
, {min, max}?
都是非贪婪的。
匹配位置的元字符
| 元字符 | 匹配对象
--- | --- | ---
^
| 脱字符 | 匹配一行的开头位置
$
| 美元符 | 匹配一行的结束位置
\<
| 单词分界符 | 匹配单词的开始位置
\>
| 单词分界符 | 匹配单词的结束位置
其他元字符
| 元字符 | 匹配对象
--- | --- | ---
I | alternation | 匹配任意分隔的表达式
(...)
| 括号 | 限定多选结构的范围,标注量词作用的元素,为反向引用捕获文本
\1, \2, ...
| 反向引用 | 匹配之前的第一、第二组括号内的字符表达式匹配的文本