繁体   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