到目前为止,我的准则是:
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+)(_\d+)?$当我测试字符串时:
UCX_1maxi_holiday2_blah_343它正确地测试了true,但是我的最后一个捕获组将永远无法到达,因为它也匹配第二个组。也就是说,如果最后一个下划线标定的部分是所有数字,我希望该部分在第三个捕获组中,而不是第二个。否则我想把它放在第二组。
我想到了帅哥和-behinds,我不认为他们会在这方面发挥作用,但我可能会感到惊讶。
我可以单独做一个单独的测试来检查字符串的结束,然后根据我的需要拆分字符串,但是我的好奇心很强。
我想知道是否有办法修改第二个捕获组,以阻止它在所有数字的情况下击打结尾
有人能用Regex JiuJitsu做这个吗?
发布于 2016-10-09 12:17:40
如果你把第二次捕获改为非贪婪,你就会得到你想要的。使用:
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+?)(_\d+)?$发布于 2016-10-09 12:22:54
您可以简化这样做:
^(UCX_|UBX_|USP_)(\w+?)(_\d+)?$
\w字符是来自A、A、0-9的字符,包括_(下划线)字符。
https://stackoverflow.com/questions/39943464
复制相似问题