编程学习

Regex的元字符总结

2016-06-18  本文已影响0人  再见小浣熊

匹配单个字符的元字符

| 元字符 | 匹配对象
--- | --- | ---
. | 点号 | 匹配单个任意字符
[ ... ] | 字符组 | 匹配单个列出的字符
[ ^... ] | 排除型字符组 | 匹配单个未列出的字符
\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, ... | 反向引用 | 匹配之前的第一、第二组括号内的字符表达式匹配的文本

上一篇 下一篇

猜你喜欢

热点阅读