【发布时间】:2011-10-06 10:28:59
【问题描述】:
我在让我的 RegEx 与我的 Ruby 脚本一起工作时遇到问题。
这是我要匹配的内容:
http://my.test.website.com/{GUID}/{GUID}/
这是我测试过的正则表达式,应该与上面显示的字符串匹配:
/([-a-zA-Z0-9@:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)([\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/])*?\/)/
3 个捕获组:
group 1: ([-a-zA-Z0-9@:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)([\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/])*?\/)
group 2: (\/[-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)
group 3: ([\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\/\/])
在尝试验证与此正则表达式的匹配时,Ruby 给了我一个错误:
empty range in char class: (My RegEx goes here) (SyntaxError)
感谢您对此的任何想法或建议。
【问题讨论】:
-
我猜 Ruby 不喜欢
...[-a-...中的第一个- -
@Jacob 听起来很合理。 @r3nrut,尝试将
-移到末尾。 -
我尝试从 alpha 匹配项中删除初始破折号,但没有任何区别。不过感谢您的建议。
-
不,破折号在
[]内时通常是一个范围符号,因此它必须排在第一位才能算作破折号(或第二个,紧跟在^字符类否定修饰符之后)