正则表达式测试
写一个模式,粘贴一段文本,输入时即可看到所有高亮的匹配和分组。
替换后
| # | 匹配 | 位置 | 分组 |
|---|
速查表
| 语法 | 含义 |
|---|---|
. | 除换行外的任意字符 |
\d \w \s | 数字、单词字符、空白 |
\D \W \S | 上述以外的任意字符 |
[abc] [^abc] | a、b、c 中的一个;除它们以外的任意字符 |
[a-z] | 范围内的一个字符 |
^ $ | 输入的开头和结尾(加 m 时为行首行尾) |
\b | 单词边界 |
* + ? | 零个或多个、一个或多个、零个或一个 |
{3} {2,5} | 恰好 3 个;2 到 5 个 |
*? +? | 尽可能少(惰性) |
(abc) | 捕获分组 |
(?<name>abc) | 命名捕获分组 |
(?:abc) | 非捕获分组 |
a|b | a 或 b |
(?=abc) (?!abc) | 后面紧跟;后面不跟 |
(?<=abc) (?<!abc) | 前面是;前面不是 |
\1 \k<name> | 重复分组已匹配的内容 |
常见问题
这里用的是哪种正则?
JavaScript(ECMAScript)正则,与你的浏览器完全一致。大部分语法与 Python、Java、PCRE 相同,但后行断言和命名分组等细节可能不同。
为什么我的模式超时了?
像 (a+)+$ 这样的模式在几乎匹配的输入上可能耗费指数级时间。本工具在后台线程中运行模式,1 秒后自动停止。
替换时怎样引用分组?
编号分组用 $1、$2,命名分组用 $<name>,整个匹配用 $&。