正则表达式匹配问题
正则表达式定义:
Hexadecimal --> (\+|\-)?0x[A-Fa-f0-9]+
Integer --> (\+|\-)?[0-9]+
Real --> (\+|\-)?[0-9]+\.[0-9]+
String1 --> ".*"
String2 --> '.*'
Variant --> \$[A-Fa-f0-9]{2,10}
Casting --> \([A-Za-z0-9]{2,10}\)[^\,]+
Parameter --> ({Hexadecimal})|({Integer})|({Real})|({String1})|({String2})|({Variant})|({Casting})
ParameterList --> (({Parameter})(,{Parameter})*)?
为了方便理解,我把每个非终结符单独拿出来写, {XXXX}表示包含XXXX的正则表达式。我做了一个类可以解析上面的内容。但这个不是重点
先说重点。用 ParameterList来匹配:
1234,122.22,"fff"
之类的参数列表毫无问题,但是他居然可以匹配
1234zzzz,122.22hehe,"fff"
这样的错误格式,如果在ParameterList的定义前面加上^,那么就只能匹配开头的1234,如果在ParameterList定义后面加$,那么只能匹配"fff",如果两个都加,那么正常的参数列表都无法匹配了
我实在是找不到我的错误,我哪里写错了呢?