正则表达式找不到列表中的短语

时间:2017-09-01 15:15:03

标签: .net regex

我正在尝试找到一个RegEx,它会找到一个不在特定短语列表中的短语。

我有一份标签清单,我想知道是否有任何其他标签不在我提供给RegEx的清单中。

例如:

label1: value 

label2: value

label3: value

newlabel: value

我希望能够指定标签1-3应该在那里,但只捕获newlabel,因为它不在列表中。我只知道我期待的标签的名称,而不是那些我不期待的标签。

感谢任何帮助。

类似于

的东西
Dim match As Match = regex.Match([anything containing a colon :] except label1|label2|label3)

1 个答案:

答案 0 :(得分:2)

您可以使用

"\b(\w+):(?<!\b(?:label1|label2|label3):)"

请参阅regex demo

<强>详情

  • \b - 字边界
  • (\w+) - 第1组 - 一个或多个单词字符
  • : - 冒号
  • (?<!\b(?:label1|label2|label3):) - 如果在当前位置的左侧,label1label2label3为整个单词,则会导致匹配失败的负面反馈(因为它们前面有一个单词边界),然后是冒号。

在VB.NET代码中,使用Regex.Matches获取包含 Match 对象的 MatchCollection ,然后获取每个匹配的.Groups(1).Value