javascript - PCRE 中是否有 "negated alternation"或 "negated string classes"、 la "negated character classes"之类的东西?

标签 javascript regex pcre

好吧,虽然模式 [abc] 匹配单个字符 abc 时,模式 [^abc] 匹配任何不是的给定字符 abc.

现在,如果我在上面的语句中用 string 替换 character,如果我还将第一个模式更改为像 (abc |def|ghi)。 -- 它将匹配等于 abcdefghi 的三个字符的连续字符串。如何匹配等于 abcdefghi 的任意三个字符的字符串>?

最佳答案

这是正则表达式的一个常见问题,简短的回答是“否”,正则表达式的操作方式没有提供“除...之外的任何 3 字母字符串”的表达方式。

但是,一些正则表达式引擎允许所谓的“否定先行断言”。这些有点难以理解 - this explanation of lookaround似乎很好地涵盖了它,尽管有点技术性。

关于前瞻的重要一点是它是“零宽度”的——它不会“用完”任何字符串。因此,在 Javascript 中,您可以匹配如下字符串:'abc123ghi'.match(/abc(?!def)...ghi/) - (?!def) 表示在 'abc' 之后不能有字母 'def',但是 ... 需要存在说那里应该有其他 3 个字符。

关于javascript - PCRE 中是否有 "negated alternation"或 "negated string classes"、 la "negated character classes"之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437757/

相关文章:

c - C 中的正则表达式自定义替换函数

php - 突出显示单词并提取其附近文本的功能

regex - PCRE正则表达式到SED

nginx - libpcre 在编译 NGINX 时抛出 ".rodata can not be used when making a shared object"错误

javascript - 如何对齐文本以适应使用 Top : 50px; 向下移动的 Div

python - Pandas 根据正则表达式模式列表将列添加到 df

c# - preg_match 到 .NET 等价物

javascript - 显示解析的 URL 值

javascript - 删除 LINES 开头和结尾的空格

javascript - 如何使用 javascript 获取 yii2 中的列值而不是 ID