gpt4 book ai didi

c++ - 如果多次找到其他组,如何使组成为强制性组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:09 26 4
gpt4 key购买 nike

到目前为止,这是我的正则表达式:

^((([a-zA-Z0-9_\/-]+)[ ])+((\bPHONE_NUMBER\b)|(\b(IP|EMAIL)_ADDRESS\b))[ ]*[;]*[ ]*)+$

如果我发现另一个 (([a-zA-Z0-9_\/-]+)[ ])+((\bPHONE_NUMBER\b)|(\b(IP|EMAIL)_ADDRESS\b)) 在第一个之后。

/tests/phone PHONE_NUMBER ;/tests/IP IP_ADDRESS 应该匹配。

/tests/phone PHONE_NUMBER/tests/IP IP_ADDRESS 不应匹配。

我怎样才能做到这一点?

最佳答案

是的,你可以做到。为此使用递归正则表达式

^(((\s*(([\w_\/-]+)\s)((\bPHONE_NUMBER\b)|(\b(IP|EMAIL)_ADDRESS\b))\s*))(;|$)(?1)*)

https://regex101.com/r/dE2nK2/3

解释

  1. (?1) 是一个递归正则表达式,用于重复第 1 组的正则表达式模式。如果要对整个字符串执行递归正则表达式,请使用 (?R),但您将无法使用开始 anchor ^
  2. (;|$) 匹配的正则表达式应以 ; 或字符串 $ 结尾。
  3. 使用 \s 作为空格而不是 [ ]
  4. ;*[;]* 是一样的。

您可以在此处了解有关递归正则表达式的更多信息:http://www.rexegg.com/regex-recursion.html

关于c++ - 如果多次找到其他组,如何使组成为强制性组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818540/

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