【发布时间】:2021-12-02 11:21:12
【问题描述】:
我要做的是修改正则表达式(JS 风格)以 not 匹配,如果模式之前 和 后跟相同的字符串。
通过一个简单的类比,假设我想匹配n 的所有实例,这些实例不是在e 之前和之后都存在。因此,例如,正则表达式不应该匹配alkene 中的n,但它应该仍然匹配pen 或nest 中的n,它们只有@987654328 @ 在一侧与n 直接相邻,而不是两者。
我见过的大多数试图找到答案的旧线程基本上都说“只使用否定的环视”,但问题是 (?<!e)n(?!e) 与这些输入中的任何不匹配 - 因为正则表达式引擎分别处理lookbehind 和lookahead,因此它认为任一条件都足以排除匹配项。
(真正的正则表达式是(?<!¸ª)()(ɣʷ|h₂|r₂|r₃|w|j)(?:e|o|ø|ɑ|i|ɚ|y|u|a)(?!¸ª),它与t͡ʃe:h₁dɣʷo¸ªh₂¸ª 中的ɣʷ 不匹配,但这使得问题看起来比实际需要更难解释)
如何修改正则表达式以仅在嵌套模式时排除模式?
【问题讨论】:
标签: javascript regex string-matching