动态匹配第n次出现

时间:2018-05-09 10:33:58

标签: regex perl

我在regex101上尝试了一些东西并且问自己:

如何匹配第n个数字组。

让我们取字符串:

string = this11is22library33this44is55library

对于 js-regex ,我能够识别以下模式

  • 获得第一名(?<=(?:\d+\D+){0})\d+ #11
  • 获得第二名(?<=(?:\d+\D+){1})\d+ #22
  • 获得第3个(?<=(?:\d+\D+){2})\d+ #33
  • 获得第4名(?<=(?:\d+\D+){3})\d+ #44
  • 获得第5个(?<=(?:\d+\D+){4})\d+ #55

如何可以构建匹配 perl 正则表达式中第n个数字块的模式?

1 个答案:

答案 0 :(得分:3)

对这个可变长度的lookbehinds使用\K(Perl支持):

(?:\d+\D+){3}\K\d+

Live demo