gpt4 book ai didi

regex - perl regex 捕获重复组

转载 作者:行者123 更新时间:2023-12-04 14:44:22 25 4
gpt4 key购买 nike

我想要一个正则表达式匹配行首的某些内容,然后匹配(并返回)所有其他单词。例如,给定这一行:

$line = "one two three etc";

我想要这样的东西(不起作用):
@matches= $line=~ /^one(?:\s+(\S+))$/;

返回到@matches,单词“二”、“三”、“等”。

我不想知道如何得到这些词。我想用正则表达式来做。看起来很简单,但我一直无法提出解决方案。

最佳答案

您不能有未知数量的捕获组。如果您尝试重复捕获组,最后一个实例将覆盖捕获组的内容:

  • 表达式: ^one(?:\s+(\S+))+$
  • 捕获 #1:etc

  • 或者:
  • 表达式: ^one\s+(\S+)\s+(\S+)\s+(\S+)$
  • 捕获 #1:two
  • 捕获 #2:three
  • 捕获 #3:etc


  • 我建议要么捕获整个组,然后按空格拆分:
  • 表达式: ^one\s+((?:\S+\s*)+)$
  • 捕获 #1:two three etc

  • 或者您可以进行全局匹配并使用 \G\K :
  • 表达式: (?:^one|(?<!\A)\G).*?\K\S+
  • 第 1 场比赛:two
  • 第 2 场比赛:three
  • 第 3 场比赛:etc
  • 关于regex - perl regex 捕获重复组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986557/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com