gpt4 book ai didi

regex - 在正则表达式中匹配一个词作为一个组

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

输入文字:

## (Chat room 1) Received message from client 1: Nice to meet you!
(CR 1) RM 1: Nice to meet you!
(CR 1) SM 1: Nice to meet you!
## (Client 1) Received message from client 1: Nice to meet you!
(CL 1) RM 1: Nice to meet you!
(CR 0) SM 3: Nice to meet you!
## (Client 3) Received message from client 3: Nice to meet you!
(CL 3) RM 3: Nice to meet you!

图案:

(##[^\n]*\n)|(\((CR|CL) \d+\)) ((RM|SM) [0-9]:)|[a-zA-Z|!]*

我的主要问题是匹配 Nice to meet you as a group 而不是如下所示的单个单词:

Problem visual output

我最初的解决方案是将 [a-zA-Z|!]* 更改为 [a-zA-Z|\s|!]* 但它随后捕获给定跟踪文​​本中的所有空格。

最佳答案

如果你想要另一个捕获组,你可以捕获匹配字符类中的内容并重复 1+ 次(可选后跟一个空格)并再次重复字符类。

如果您使用 [a-zA-Z!],您也可能只匹配多个感叹号 !!!

如果您不想将其作为一个单独的词进行匹配,您可以选择在 [a-zA-Z]+!? 之后匹配单个 ! 这样您只会匹配可能以感叹号结尾的单词。

(##[^\n]*\n)|(\((CR|CL) \d+\)) ((RM|SM) [0-9]:)|([a-zA-Z]+!?(?: [a-zA-Z]*!?)*)

更新的部分 ([a-zA-Z]+!?(?: [a-zA-Z]*!?)*) 匹配:

  • ( 捕获group 6(整个模式中的group 6)
    • [a-zA-Z]+!? 匹配 1+ 次 a-zA-Z 和可选的 !
    • (?:
      • [a-zA-Z]*!? 匹配一个空格,字符a-zA-Z和可选的!
    • )* 关闭非捕获组,重复0+次匹配更多词
  • ) 关闭捕获组 6

Regex demo


匹配字符类中的所有字符,但不仅仅匹配空格:

(##[^\n]*\n)|(\((CR|CL) \d+\)) ((RM|SM) [0-9]:)|([a-zA-Z!]+(?: [a-zA-Z!]*)*)

Regex demo

关于regex - 在正则表达式中匹配一个词作为一个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62902675/

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