2017-09-01 62 views
0

我想找到一個正則表達式,它會找到一個不在特定短語列表中的短語。正則表達式找到不在列表中的短語

我有一個標籤列表,我想知道是否有任何其他標籤不在我提供給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

你在用什麼語言,你有什麼可以分享的東西嗎? – sniperd

+2

我不確定你在找什麼。你可以發表例句和他們的正面和負面結果(輸出和非輸出的例子)?另外,你到目前爲止嘗試過什麼? – ctwheels

+0

謝謝,輸入是我添加到問題中的。輸出結果將通過表達式的正則表達式測試。 我沒有一個我已經嘗試過的例子,因爲我不知道如何開始這個。我正在使用.Net版本 –

回答

1

您可以使用

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

regex demo

詳細

  • \b - 字邊界
  • (\w+) - 第1組 - 的一個或多個字字符
  • : - 冒號
  • (?<!\b(?:label1|label2|label3):) - 失敗比賽如果負回顧後發,立即在當前位置的左側,有label1,label2label3作爲整個單詞(因爲它們前面有一個單詞邊界)並且後跟一個冒號。

在VB.NET代碼,使用Regex.Matches得到MatchCollection含有匹配對象,然後獲得每個匹配的.Groups(1).Value