正则表达式 – 在正则表达式中否定交替

我可以在正则表达式中使用“Alternation”来匹配任何出现的“cat”或“dog”:

(cat|dog)

是否有可能NEGATE这个交替,并匹配任何不是“猫”或“狗”的东西?

如果是这样,怎么样?

例如:

假设我试图用英语大致匹配END OF SENTENCE.

以机智:

(\.)(\s+[A-Z][^.]|\s*?$)

使用以下段落:

敏捷的棕色狐狸跳过了懒狗.曾几何时,桑奇博士,帕森斯先生和州长梅森都去了商店.你好,世界.

我错误地在Dr.,Mr.和Gov.找到了“句末”.

(我正在使用http://regexpal.com/进行测试,以防你想看到我在上面的例子中看到的内容)

由于这是不正确的,我想说的是:

!(Dr\.|Mr\.|Gov\.)(\.)(\s+[A-Z][^.]|\s*?$)

当然,这不起作用,这就是我寻求帮助的原因.

我也试过了!/(Dr. | Mr. | Gov.)/,和~~这些都没有任何帮助.

如何避免“Dr.”,“Mr.”的匹配和“州长”等?

提前致谢.

最佳答案 这不可能.你通常会使用负面的lookbehind(?<!…)来做这件事,但是JavaScript的正则表达式并不支持这一点.相反,您必须在事后过滤匹配以丢弃您不想要的匹配.

点赞