到目前为止我的正则表达式是:
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+)(_\d+)?$
当我测试字符串时:
UCX_1maxi_holiday2_blah_343
它正确地测试了,但是我的上一个捕获组永远不会到达,因为它也匹配第二组。 即如果最后一个下划线划分的部分是所有数字,我希望第三个捕获组中的那个部分不是第二个。另外我想在第二组中使用它。
我已经想到了前瞻和后悔,我不认为他们会为此工作,但我可能会感到惊讶。
我可以单独进行测试,单独检查字符串的结尾,然后根据需要拆分字符串,但需要知识分子的好奇心。
我想知道是否有办法修改第二个捕获组,以阻止它破坏结束,如果它是所有数字
任何人都有一些Regex JiuJitsu吗?
答案 0 :(得分:1)
如果您将第二次捕捉更改为非贪婪,您将得到您想要的。 使用:
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+?)(_\d+)?$
答案 1 :(得分:0)
您可以简化这样做:
^(UCX_|UBX_|USP_)(\w+?)(_\d+)?$
\w
字符是来自a-z,A-Z,0-9的字符,包括_ (下划线)角色。