我已经搜遍了所有人,根本无法弄明白这一点。我一直试图在多行字符串中找到所有匹配项,例如:
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是否可以这样做,还是我需要在循环中解析字符串?
答案 0 :(得分:0)
请尝试以下方法。 *
是贪婪的,它会尝试匹配最长的字符串,使用*?
它会尝试匹配最短的字符串。
(?<=<\*).*?(?=\*>)