Regex 正则表达式不应与其他前缀匹配

Regex 正则表达式不应与其他前缀匹配,regex,Regex,例如,如果我有这些话 约翰=14 亚当=21 ben=11 约翰=18 约翰=17 约翰=141 任务是查找所有出现的john=14 我提出了以下正则表达式:*=[^14].\n它匹配每个字符串,在等号后面没有前导1。 但是,在本例中,我只想精确匹配john=14(以及本例的排列)。不管是否有一个或多个john=14。我考虑了正则表达式的求反,因此我想查找每个与我要查找的字符串不相等的字符串,但正则表达式有问题([^\bjohn\b=14]\n) 任何帮助都将不胜感激:) 您需要使用负前瞻

例如,如果我有这些话

  • 约翰=14
  • 亚当=21
  • ben=11
  • 约翰=18
  • 约翰=17
  • 约翰=141
任务是查找所有出现的
john=14

我提出了以下正则表达式:
*=[^14].\n
它匹配每个字符串,在等号后面没有前导1。
但是,在本例中,我只想精确匹配
john=14
(以及本例的排列)。不管是否有一个或多个
john=14
。我考虑了正则表达式的求反,因此我想查找每个与我要查找的字符串不相等的字符串,但正则表达式有问题(
[^\bjohn\b=14]\n


任何帮助都将不胜感激:)

您需要使用负前瞻

^(?!john=14$).*
开始处的负前瞻断言要匹配的字符串不包含确切的
john=14
字符串。如果是,则匹配所有字符

^(?!.*=14$).*

或者
^(?。*\bjohn=14$).
谢谢您的回答。还有一个问题:现在给我一个满是
john=random number
的列表,我想通过匹配所有
john=random number
并“删除”它们,从这个列表中提取所有
john=14
,但保留输入中的任何其他胡言乱语。例如(三行):约翰=12亚当=15约翰=14。结果应该是adam=15和john=14。将此作为一个新问题提问,并进行详细解释。