从第一场比赛的偏移量开始第二场比赛


Start second match from offset of first match

我需要从上一个匹配的最后一个偏移量链接第二个匹配。想象一下我有:

id, name

我将使用preg_match_all()来捕获idname(逗号分隔),所以我可以使用LIKE THIS:

's* ('w+) 's* (?:,|$)

它与我前面的例子很好用。但如果我这样做:

invalid example

它将匹配example。在这种情况下,我不想匹配,因为只有当所有数据都匹配时,我才需要接受(在我的正则表达式中不允许使用空格)。

为了解决这个问题,我应该可以使用线锚的开头,LIKE this:

^ 's* ('w+) 's* (?:,|$)

所以我前面的例子现在将不匹配(没错),但我的第一个例子将失败,因为name将不匹配,一旦它不匹配就是行的开始。

示例

  • CCD_ 6只需要匹配CCD_
  • CCD_ 8需要与CCD_ 9和CCD_
  • will fail需要失败
  • will, fail too也需要失败

此处有更多示例

您可以使用此正则表达式来匹配所有输入,后面跟有,,或者使用preg_match_all函数匹配输入末尾:

[^,] +.*$(*SKIP)(*F)|('w+)(?=(?:, 'w+)*$)

RegEx演示