2014-07-21 86 views
2

好吧,讓我說我有一個字符串「貓的帽子狗」,我知道想要正則表達式匹配來自同一個字符串的貓和狗。VB.Net正則表達式匹配

所以我有這樣的:

Dim myString As String = "The cat in the hat dog" 
Dim regex = New Regex("\bcat\b.*\bdog") 
Dim match = regex.Match(myString) 
If match.Success Then 
    Console.WriteLine(match.Value) 
End If 

的match.Value返回,預計「戴帽子的貓犬」。

但是我真正需要的是隻是「貓狗」,沒有中間的其他詞語,我就卡住了。

感謝您的幫助!

如果有幫助,我想解析的字符串就像「遊戲名稱20_03 Starter Pack r6」,我試圖將「20_03 r6」作爲版本信息。目前使用「\ b \ d {2} _ \ d {2} \ b。\ br \ d」作爲我的正則表達式字符串。

回答

5

你可以加上括號正則表達式的部分來創建捕捉值的組:

Dim regex As New Regex("\b(cat)\b.*\b(dog)") 

然後使用match.Groups(1).Valuematch.Groups(2).Value

+0

正是我需要的,謝謝! – Keirathi

4

你的正則表達式將是

Dim regex = New Regex("\bcat\b|\bdog\b") 

該輸入字符串的字符串catdog匹配。

DEMO

對於第二個字符串,您正則表達式將

\b\d{2}_\d{2}\b|r\d 

DEMO

說明:

  • \b匹配單詞邊界(即單詞字符和非單詞字符之間的匹配)。
  • \d{2}完全匹配兩位數字。
  • _匹配文字下劃線符號。
  • \d{2}完全匹配兩位數字。
  • \b匹配單詞邊界(即,單詞字符和非單詞字符之間的匹配)。
  • |邏輯OR運算符通常用於組合兩個正則表達式模式。 this|that,這個或那個。
  • r\d字母r後跟一個數字。
+1

你可以發表downvote的原因嗎?我必須學習一些東西。 –

+0

哦,那個正則表達式測試網站很不錯。我不認爲邏輯或門正是我所需要的,因爲我無法控制字符串,並且可以由最終用戶進行更改。如果兩件作品都存在,我只想從中提取版本信息。應該多澄清一點。使用其他人的解決方案,但我感謝您的幫助! – Keirathi