我正在尝试创建一个匹配以下任一项的正则表达式 -
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。 - 我忽略了匹配字符串中的空格,但它们可以存在。
答案 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
插入您认为合适的表达式中。