正则表达式匹配问题

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

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

我实在是找不到我的错误,我哪里写错了呢?
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lexchou 2004-08-29
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView.asp?id=3318956
搞定,结贴
lexchou 2004-08-29
  • 打赏
  • 举报
回复
"1234zzz" doesn't match /(\+|\-)?0x[A-Fa-f0-9]+/
mingbo_wan 2004-08-28
  • 打赏
  • 举报
回复
"1234zzz" ~= /(\+|\-)?0x[A-Fa-f0-9]+/
RE matches portion not all.

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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