在开头和结尾查找由2个特定字符包围的字符串的所有实例

时间:2016-11-26 04:46:21

标签: regex vb.net

我已经搜遍了所有人,根本无法弄明白这一点。我一直试图在多行字符串中找到所有匹配项,例如:

Dim VariableText As String = "Some text <* 

Dim Var1 as Integer = 5

ResponseText = IIf(Var1 <= 2,Var1 * 5, iif(Var1 > 2, Var1 * 2, 0)).ToString(""0"")

*> Some more text <* ResponseText = MsgBox(""TEST!"") *>"

请注意,封闭者中也可以包含小于,大于和星号,因此排除这些字符的列表不起作用。

我尝试了许多不同的正则表达式组合,但我似乎只能捕获第一个“&lt; *”和最后一个“*&gt;”之间的所有内容。

我想要的是捕获“&lt; **&gt;”所包含的每个部分所以我只能使用机箱内的文本。例如(这是我能找到的最接近的正则表达式):

Dim R as New Regex("(?<=<\*).*(?=\*>)", RegexOptions.SingleLine)
Dim Coll as MatchCollection = R.Matches(VariableText)
For Each M as Match in Coll
    'Do something with each section
Next

我也尝试了一个排除块:“(?&lt; =&lt; \ *)?.(?:&lt; \ *)*(?= \ *&gt;)” 但那不起作用

有人知道Regex是否可以这样做,还是我需要在循环中解析字符串?

1 个答案:

答案 0 :(得分:0)

请尝试以下方法。 *是贪婪的,它会尝试匹配最长的字符串,使用*?它会尝试匹配最短的字符串。

(?<=<\*).*?(?=\*>)