我需要匹配以下语句:
Hi there John
Hi there John Doe (jdo)
不匹配这些:
Hi there John Doe is here
Hi there John is here
所以我认为这个正则表达式会起作用:
^Hi there (.*)(?! is here)$
但它没有 - 我不知道为什么 - 我相信这可能是由捕获组(。*)引起的,所以我认为也许让 * 运算符变得懒惰会解决问题......但不是。这个正则表达式也不起作用:
^Hi there (.*?)(?! is here)$
谁能指出我的解决方案方向?
解决方案
要检索没有 is here
结尾的句子(如Hi there John Doe (the second)
),您应该使用(作者@Thorbear):
^Hi there (.*$)(?<! is here)
对于中间包含一些数据的句子(例如Hi there John Doe (the second) is here
,John Doe(第二个)是所需的数据),简单的分组就足够了:
^Hi there (.*?) is here$
.
╔══════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
║▒▒▒Everyone, thank you for your replies▒▒▒║
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════════════════╝