5

我正在尝试匹配不以任一结尾的行.!不以任."一结尾的行,!"因此它应该同时匹配两者

  • say "bye"
  • say "bye

但不应该匹配:

  • say "bye.
  • say "bye!
  • say "bye."
  • say "bye!"

我尝试使用正负前瞻,尝试按照Regex AND operator中的建议将它们用作 AND ,但我无法使其工作,我也不确定前瞻是否可行。

4

3 回答 3

4

您可以使用

^(?!.*[.!]"?$).*$

在此处输入图像描述

Regex Demo

注意:-这也与我们使用的空行匹配*,这意味着匹配任何零个或多个时间,如果您想避免空行匹配,您可以使用+量词,这意味着匹配一个或多个时间

于 2019-08-17T12:58:08.003 回答
1

只需使用负面的回顾。这完全符合您的要求:^.*+(?<![.!]"?)$


^- 行首
.*+- 任意数量的字符,不放弃回溯
(?<!+ )- 前面没有
[.!]- 点或感叹号
"?- 可选双引号
$- 行尾

于 2019-08-19T09:37:02.067 回答
0

确保bye没有通过负字符类的正向预读来成功.!然后使用量词使最后一个"可选:?

\bsay "bye(?=[^.!])"?
于 2019-08-17T12:03:10.737 回答