正则表达式匹配问题

lexchou 2004-08-28 09:45:45
正则表达式定义:

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",如果两个都加,那么正常的参数列表都无法匹配了

我实在是找不到我的错误,我哪里写错了呢?
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lexchou 2004-09-04
  • 打赏
  • 举报
回复
在另外一个板块被人解决了。
ouyld 2004-09-01
  • 打赏
  • 举报
回复
UP
blues-star 2004-08-30
  • 打赏
  • 举报
回复
因为你所写的是或地关系1234zzz虽然不是数值类型,但是是字符串,所以被String2匹配了。

10,607

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧