为了账号安全,请及时绑定邮箱和手机立即绑定

如果“单词”和“?”之间有“句号”,则不匹配

如果“单词”和“?”之间有“句号”,则不匹配

幕布斯6054654 2023-04-20 10:47:36
Perhaps he hadn't. [Perhaps he didn't?]Perhaps he didn't.[Perhaps he hadn't?]我想匹配括号中的位;以“也许”开头并以问号结尾的句子。我认为这个正则表达式会起作用:Perhaps.*(?!=\.)\?但是,我得到的是:[Perhaps he hadn't. Perhaps he didn't?]Perhaps he didn't.[Perhaps he hadn't?]为什么是这样?以及如何解决?https://regexr.com/5dfhs
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以像这样使用否定字符类:

/Perhaps[^.?]*\?/g

正则表达式演示

要匹配完整的单词使用:

/\bPerhaps[^.?]*\?/

并避免跨行匹配使用:

/\bPerhaps[^.?\r\n]*\?/

这里[^.?]会匹配除.and之外的任何字符?

关于你的正则表达式:

(?!=\.)实际上是负面前瞻的错误语法。=如果我们有文字和前面,它只是意味着不匹配.

即使您更正它以使用Perhaps.*(?!\.)\?它仍然无法工作,因为(?!\.)只会应用于匹配?并且总是会成功。

虽然不推荐,但如果你真的想使用负前瞻,那么使用:

/Perhaps(?:(?!\.).)*\?/


查看完整回答
反对 回复 2023-04-20
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信