gpt4 book ai didi

用于拆分具有多个捕获组的单词列表的 RegEx

转载 作者:行者123 更新时间:2023-12-01 13:14:48 25 4
gpt4 key购买 nike

我有以下字符串:

one two three four five six seven eight nine

我正在尝试构建一个正则表达式,将字符串分为三组:
  • 第 1 组:“一二三”
  • 第 2 组:“四五六”
  • 第 3 组:“七八九”

  • 我尝试过 (.*\b(one|two|three)?)(.*\b(four|five|six)?)(.*\b(seven|eight|nine)?) 的变体,但这种模式将完整匹配分为一组包含完整字符串 - the demo can be found here

    尝试 (.*\b(one|two|three))(.*\b(four|five|six))(.*\b(seven|eight|nine)) 似乎让我更接近我想要的东西,但匹配信息面板显示该模式标识了两个匹配项,每个匹配项包含六个捕获组。

    我使用 OR 语句是因为组可以是任意长度,例如 two three four ,将模式应用于此字符串应识别两组 -
  • 第 1 组:“两个”
  • 第 2 组:“三四”。
  • 最佳答案

    一个大的正则表达式可能会这样做

    (?=.*\b(?:one|two|three|four|five|six|seven|eight|nine)\b)(\b(?:one|two|three)(?:\s+(?:one|two|three))*\b)?.+?(\b(?:four|five|six)(?:\s+(?:four|five|six))*\b)?.+?(\b(?:seven|eight|nine)(?:\s+(?:seven|eight|nine))*\b)?

    https://regex101.com/r/rUtkyU/1

    可读版本
     (?=
    .* \b
    (?:
    one
    | two
    | three
    | four
    | five
    | six
    | seven
    | eight
    | nine
    )
    \b
    )
    ( # (1 start)
    \b
    (?: one | two | three )

    (?:
    \s+
    (?: one | two | three )
    )*
    \b
    )? # (1 end)

    .+?
    ( # (2 start)
    \b
    (?: four | five | six )

    (?:
    \s+
    (?: four | five | six )
    )*
    \b
    )? # (2 end)

    .+?
    ( # (3 start)
    \b
    (?: seven | eight | nine )

    (?:
    \s+
    (?: seven | eight | nine )
    )*
    \b
    )? # (3 end)

    关于用于拆分具有多个捕获组的单词列表的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212774/

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