gpt4 book ai didi

c++ - 正则表达式重复模式和不匹配组

转载 作者:行者123 更新时间:2023-11-28 02:47:09 25 4
gpt4 key购买 nike

好吧,我完全无法重复工作,更不用说我希望它的工作方式了......

我将引入一个包含以下信息的字符串

NETWORK;PASS;1;THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS;\r

到目前为止我有什么

(?:NETWORK;.*;(?:0|1);)([^|]*)

这给我留下了第一个匹配的 block

THIS TEXT

我想做的是设置它,这样我就可以通过编程指定要匹配的 block 。用管道分隔的文本将有 3-7 个“ block ”,根据情况我可能需要匹配其中任何一个,但一次只能匹配一个。

我想过只是复制

([^|]*)

并向除了一个之外的所有运算符添加一个不匹配的运算符,但如果我复制该组,我似乎无法让它匹配任何东西,而且我也无法让重复的运算符在该组上工作。

我有点迷茫所以如果需要澄清我会根据要求提供这可能没有意义。任何帮助表示赞赏。

最佳答案

为什么不在管道符号上拆分THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS?比动态生成的正则表达式容易得多。

但是如果你真的想生成一个正则表达式:

  1. (?:NETWORK;.*;(?:0|1);) 开始
  2. 要获取第 n 个元素(从 0 开始索引),添加 (?:[^|]+[|]){n}(将 n 替换为数字跳过),然后是 ([^|]+)

例子:

(?:NETWORK;.*;(?:0|1);)(?:[^|]+[|]){3}([^|]+)

Regular expression visualization

Debuggex Demo

在您的示例中与 WITH 匹配。 Here's a regex101 demo.

关于c++ - 正则表达式重复模式和不匹配组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022045/

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