无法弄清楚正则表达式模式

时间:2011-10-01 05:13:26

标签: regex vb.net string .net-2.0

我有一个字符串,其中包含一些自定义公式,例如FVAL("A")+FVAL(B)。我想找出FVAL()里面没有引号的所有字符串。

所以基本上我想提取B,因为它没有引号。

2 个答案:

答案 0 :(得分:1)

使用

FVAL\(([^")]*)\)

这匹配FVAL(,后跟除引号或右括号之外的任意数量的字符,后跟)

另一种可能性(匹配位于$0而不是$1

(?<=FVAL\()[^")]*(?=\))

这匹配由FVAL()包围的非引号/非括号字符串。

在VB.net中:

Dim RegexObj As New Regex("FVAL\(([^"")]*)\)", RegexOptions.IgnoreCase)
Dim MatchResult As Match = RegexObj.Match(SubjectString)
While MatchResult.Success
    ResultList.Add(MatchResult.Groups(1).Value)
    MatchResult = MatchResult.NextMatch()
End While

Dim RegexObj As New Regex("(?<=FVAL\()[^"")]*(?=\))", RegexOptions.IgnoreCase)
Dim MatchResult As Match = RegexObj.Match(SubjectString)
While MatchResult.Success
    ResultList.Add(MatchResult.Value)
    MatchResult = MatchResult.NextMatch()
End While

答案 1 :(得分:0)

你需要一个像

这样的表达式
"FVAL\\(([^\"]+)\\)"

包括捕获组的一组括号。