【问题标题】:Match the n-th occurence dynamically动态匹配第 n 次出现
【发布时间】:2018-05-09 10:33:58
【问题描述】:

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

如何动态匹配第n个数字组。

让我们获取字符串:

string = this11is22library33this44is55library

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

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

如何构造这样的模式,匹配 perl regex 中的第 n 个数字块?

【问题讨论】:

  • 将它们转换为^(?:\d+\D+){0}(\d+) 并获取$1

标签: regex perl


【解决方案1】:

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

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

Live demo

【讨论】:

  • 哇,这正是我想要的。我会详细了解\K 的事情。
猜你喜欢
  • 2015-04-10
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多