gpt4 book ai didi

regex - 将字符串与 PCRE 中的多个模式匹配

转载 作者:行者123 更新时间:2023-12-04 06:25:11 28 4
gpt4 key购买 nike

我们如何将一个字符串与 PCRE 中的多个模式匹配?我需要匹配这个字符串

subj1 = "9112345678 put car details of the car";

patt1 = "(\\d+) ([a-z]+) ([a-z]+) (.+)";

有时主题可能是这样的
subj2 = "9112345678 put car";

这是匹配模式
patt2 = "(\\d+) ([a-z]+) ([a-z]+)";

由于主题是动态的并且未知,因此先验想要“或”这两种模式并希望将主题与复合模式相匹配。
就像是
子匹配(patt1 或 patt2)
我们可以在 PCRE 中做到这一点吗?

最佳答案

您只需要将最后一个块设为可选:

(\\d+) ([a-z]+) ([a-z]+)( (.+))?

如果您还需要允许“9112345678 put”,则添加更多可选组:
(\\d+) ([a-z]+)( ([a-z]+)( (.+))?)?

如果您想保持对捕获组的良好顺序引用,并且您的 PCRE 引擎确实是 PC,那么您可以使用 clustering groups 代替某些捕获组:
(\\d+) ([a-z]+)(?: ([a-z]+)(?: (.+))?)?

感谢 Kobi 善意地建议这个变体。使用此版本,匹配:
9112345678 put car details of the car

将产生:
  • "9112345678" 中的 $1
  • "put" 中的 $2
  • "car" 中的 $3
  • "details of the car" 中的 $4

  • 这可能比考虑所有额外的嵌套更容易处理。

    关于regex - 将字符串与 PCRE 中的多个模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119953/

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