正则表达式的正确性

时间:2011-10-07 07:20:40

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

我正在尝试创建一个匹配以下任一项的正则表达式 -

FVAL(A)
FVAL("A")
FVAL(A,B)
FVAL("A",B)
FVAL("A","B")
FVAL(A,"B")
FVAL(A,B,C)
FVAL("A",B,C)
FVAL("A","B",C)
FVAL("A","B","C")
FVAL("A",B,"C")
FVAL(A,"B","C")

正则表达式 -

FVAL\s*\(\s*["*]\s*\w+\s*["*]\s*,*\s*["*]\s*\w+\s*["*]\s*,*\s*,*\s*["*]\s*\w+\s*["*]\s*\)

这个正则表达式应该返回所有和任何形式的函数。

例如 -
如果匹配字符串为 - FVAL(A,"B")+5,则匹配组应为FVAL(A,"B")

P.S。 - 我忽略了匹配字符串中的空格,但它们可以存在。

1 个答案:

答案 0 :(得分:4)

你的表达方式方式过于复杂。

FVAL\("?\w+"?(?:,"?\w+"?){0,2}\)

故障:

FVAL         # "FVAL"
\(           # "("
"?           # an optional double quote
\w+          # at least one word character
"?           # an optional double quote
(?:          # group
  ,          #   a comma
  "?\w+"?    #   quote - word character - quote
){0,2}       # end group, repeat 0-2 times
\)           # ")"

将空格\s插入您认为合适的表达式中。