当我按如下方式编写正则表达式时:
/(.*)/(.*)
来自字符串
/aaa/bbb/ccc
我得到小组:
#1 aaa/bbb
#2 ccc
但我希望它像:
#1 aaa
#2 bbb/ccc
如何更改分组顺序?
答案 0 :(得分:2)
基本上有两种方法可以达到这个目的:
/(.*?)/(.*)
.*
匹配贪婪,所以第一个.*
首先匹配(=字符串的提醒),然后回溯直到正斜杠可以匹配。惰性匹配反过来工作,.*?
匹配尽可能少(=无),然后展开直到斜杠可以匹配。
/([^/]*)/(.*)
正如我们所知,我们希望在正斜杠之前匹配所有内容,我们可以使用正斜杠被否定的字符类,然后再次匹配贪婪。这是更高效的,因为您可以一步完成匹配,而不是通过延迟匹配扩展您的模式。