我正在尝试找到一个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)
答案 0 :(得分:2)
您可以使用
"\b(\w+):(?<!\b(?:label1|label2|label3):)"
请参阅regex demo。
<强>详情
\b
- 字边界(\w+)
- 第1组 - 一个或多个单词字符:
- 冒号(?<!\b(?:label1|label2|label3):)
- 如果在当前位置的左侧,label1
,label2
或label3
为整个单词,则会导致匹配失败的负面反馈(因为它们前面有一个单词边界),然后是冒号。在VB.NET代码中,使用Regex.Matches
获取包含 Match 对象的 MatchCollection ,然后获取每个匹配的.Groups(1).Value
。