如何匹配“有”,但不匹配“有”

问题描述 投票:0回答:3

我想匹配这样的短语:

  • 有相同的问题
  • 面临相同问题
  • 有相同的问题
  • 我遇到同样的问题
  • 我看到相同的问题
  • 我有同样的问题

但是如果它们是过去时,我不想匹配它们,这意味着例如,包含该单词的任何东西都应排除在外:

  • 我有同样的问题
  • 有相同的问题

稍后,我将以过去时添加其他单词。

我尝试过此正则表达式,但即使前面带有“ had”一词,它仍然与“同一个问题”匹配

((?:i\s)?(?:have\s)?(?<!had\s)(?:(?:the\s|a\s)?same\s(?:(?:problem|question|issue)|here)))

https://regex101.com/r/Nvjtqj/1

为什么此正则表达式即使在其正前面包含单词“ had”,仍会找到短语“ same issue”?

我想匹配这样的短语:面对相同问题的问题相同,我遇到相同问题的问题相同,但是我不想...

php regex preg-match regex-lookarounds
3个回答
0
投票

[当您不固定视线时,正则表达式引擎将简单地放弃一个单词以使表达式匹配-在这种情况下,因为“相同”不存在以“必须”开头的问题。

请注意,这扩大了您对一个表达式可以执行的限制,并输入了多个检查和解析器的范围。如果您需要使用表达式来执行此操作,则可能类似于:


0
投票

您需要排除所需的过去时动词的所有匹配项,然后匹配所需的匹配项:


-2
投票

也许这可以帮助...

© www.soinside.com 2019 - 2024. All rights reserved.