首页 > 解决方案 > 正则表达式 (.NET) 在其他两个模式之间查找模式

问题描述

我有一个看起来像这样的字符串:

DOG[i want to look for specific hits of stuff here]

我想匹配在开头DOG[和结尾之间出现的任何单词“look”或“stuff”]

我知道我可以写一个正则表达式(?<=DOG\[).*?(?=\])来查找开头和结尾位之间的所有文本,但我只想查找这些开头和结尾之间的特定单词。

我怎样才能做到这一点?

标签: c#.netregex

解决方案


由于在 .NET 正则表达式中,您可以在后视中使用匹配未知长度字符串的模式,您可以使用

(?<=DOG\[[^][]*?)(?:look|stuff)(?=[^][]*])

请参阅正则表达式演示

这里,

  • (?<=DOG\[[^][]*?)- 一个积极的后视,匹配紧接在前面的位置和除and之外的DOG[任何 0+ 字符[]
  • (?:look|stuff)-lookstuff
  • (?=[^][]*])- 与紧随其后的任何 0+ 字符(除了[and]和然后是].

推荐阅读