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

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


幕布斯6054654
浏览 99回答 1
1回答

波斯汪

您可以像这样使用否定字符类:/Perhaps[^.?]*\?/g正则表达式演示要匹配完整的单词使用:/\bPerhaps[^.?]*\?/并避免跨行匹配使用:/\bPerhaps[^.?\r\n]*\?/这里[^.?]会匹配除.and之外的任何字符?关于你的正则表达式:(?!=\.)实际上是负面前瞻的错误语法。=如果我们有文字和前面,它只是意味着不匹配.。即使您更正它以使用Perhaps.*(?!\.)\?它仍然无法工作,因为(?!\.)只会应用于匹配?并且总是会成功。虽然不推荐,但如果你真的想使用负前瞻,那么使用:/Perhaps(?:(?!\.).)*\?/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript