簡體   English   中英

使用vb.net和RegEx在嵌套字符串中查找字符串

[英]Using vb.net and RegEx to find string inside nested string

使用VB.NET,有沒有辦法一步一步進行此RegEx調用...而不是2-3?

我試圖找到單詞“ bingo”,或者在START和END單詞之間找到任何東西,然后在內部的FISH和CAKES單詞中找到它。 我的最終結果應該只是“賓果游戲”。

Dim s1 As String = "START (random string) FISH bingo CAKES (random string) END"

Dim m As Match

m = RegEx.Match(s1, "START\w*END") 
If (m.Success) Then 
   Dim s2 As String = m.Groups(0).ToString()
   m = RegEx.Match(s2, "FISH\w*CAKES")   
   if(m.Success) then
      s2 = m.Groups(0).ToString()
      m = RegEx.Match(s2, "bingo")
      s2 = m.Group(0).ToString()
   End If
End If

不確定VB.NET,但可以使用以下RegExp捕獲內部的“賓果”:

START.*FISH.*(bingo).*CAKES.*END

然后,“賓果”將是此表達式的第一個(也是唯一的)匹配項。

您可以使用先行和后退:

Dim s1 As String = "START (random string) FISH bingo CAKES (random string) END"
Dim m As Match = RegEx.Match(s1, "(?<=\bSTART\b.*?\bFISH\s+)\w+(?=\s+CAKES\b.*?\bEND\b)")
Dim s2 as String = m.Value()

但是我認為使用捕獲組就像@Alaudo建議的那樣簡單:

Dim m As Match = RegEx.Match(s1, "\bSTART\b.*?\bFISH\s+(\w+)\s+CAKES\b.*?\bEND\b")
Dim s2 as String = m.Groups(1).Value()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM