【问题标题】:REGEX - specify groups, grouping orderREGEX - 指定组,分组顺序
【发布时间】:2016-11-20 10:43:44
【问题描述】:

当我按如下方式编写正则表达式时:

/(.*)/(.*)

从字符串

/aaa/bbb/ccc

我得到了组:

#1  aaa/bbb
#2  ccc

但我希望它是这样的:

#1  aaa
#2  bbb/ccc

如何更改分组顺序?

【问题讨论】:

    标签: regex backreference regex-group


    【解决方案1】:

    基本上有两种方法可以实现:

    1. 惰性匹配 - 如/(.*?)/(.*)

    .* 匹配贪心,所以第一个.* 首先尽可能匹配(= 字符串的提示),然后回溯直到可以匹配到正斜杠。惰性匹配则相反,.*? 匹配尽可能少(= 无),然后扩展直到可以匹配斜线。

    1. 负字符类匹配 - 如/([^/]*)/(.*)

    我们知道,我们想要匹配正斜杠之前的所有内容,我们可以使用一个字符类,其中正斜杠被否定,然后再次匹配贪婪。这更高效,因为您可以一步匹配,而不是使用惰性匹配扩展您的模式。

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2022-01-04
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多