Regular

来自康健生活
Kangkk留言 | 贡献2025年7月30日 (三) 09:37的版本 模式
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

正则的用途

应用场景

应用

匹配单个字符 匹配一组字符 提取数字 示例 示例
示例 示例 示例 示例 示例
示例 示例 示例 示例 示例

模式

glob pattern

Regular Expression

历史

标准

PCRE POSIX PCRE&POSIX

规范

可视化工具

Regexper Regulex Debuggex regexmagic regexbuddy parsehub regexr

文档

元字符 普通字符 限定符 字符转义 字符类 分枝条件 分组
反义 后向引用 注释 贪婪 原子组 逆序环视 排除
懒惰 处理选项 平衡组 递归匹配 误匹配 漏匹配 命名组 委托
性能 模糊 捕获 字面量 重复 其他 Lookaround

字符

锚字符

标题文字 标题文字 标题文字
^ es5 示例
$ es5 示例
\b es5 示例
\B es5 示例
(?=p) es5 示例
(?!p) es5 示例
(?<=p) es6 示例
(?<!p) es6 示例
(?:) 匹配冒号后的内容但是不获取匹配结果;不进行储存供以后使用

文摘

工具

sed grep AWK

web 可视化

debuggex visualize

匹配

模糊匹配

横向模糊匹配

纵向模糊匹配

贪婪匹配

惰性匹配

引擎

DEELX

实现方式

回溯 模式串 lazy dfa

正则库

正则替换

$ number 包括替换字符串中的由 number标识的捕获组所匹配的最后一个子字符串,其中 number 是一个十进制值。 示例
${ name } 包括替换字符串中由 (?<name> ) 指定的命名组所匹配的最后一个子字符串。 示例
$$ 包括替换字符串中的单个“$”文本。 示例
$& 包括替换字符串中整个匹配项的副本。 示例
$` 包括替换字符串中的匹配项前的输入字符串的所有文本。 示例
$' 包括替换字符串中的匹配项后的输入字符串的所有文本。 示例
$+ 包括在替换字符串中捕获的最后一个组。 示例
$_ 包括替换字符串中的整个输入字符串。 示例

语言

.NET JavaScript PHP JAVA Perl Python Go C C# C++ Android PCRE

匹配器

匹配器 复杂度 描述
NFA 构造O(n),匹配O(nm) 提供longest-leftmost匹配,
DFA O(2n),最小化O(knlogn)N=O(2n)),匹配O(m)

不需要回溯,
不支持捕获组,
不支持反向引用和$number,
使用DFA引擎的语言和工具主要有awk、egrep 和 lex

n=regex长度,m=串长,k=字母表大小,n=原始的dfa大小

Regular实例

mediawiki正则文本替换 匹配指定行 替换指定行内容 匹配任意字符 排除
死循环 匹配到字符为止 sublime 匹配不包含某些字符串 替换域名
摘取匹配词附近 传参数 匹配路径 html

场景

文件 网址 域名
示例 示例 示例
示例 示例 示例

error

  • Parsing error: invalid-first-character-of-tag-name
    <’ 原始码为 &lt;‘>’ 原始码为 &gt;

参考