首页 > 解决方案 > 用正则表达式匹配多个字符串字符

问题描述

`## (聊天室 1) 收到来自客户端 1 的连接请求。

(CR 1)RR 1。

(聊天室 1)接受的客户 1。

(CR 1) 交流 1。

(聊天室 0)收到来自客户端 2 的连接请求。

(CR 0)RC 2。

(聊天室 0)拒绝客户 2。匹配字符串问题

上面的图片清楚地描述了我的问题。我正在尝试匹配 RR,AC 和 RC 。我不想要广泛匹配,但下面的 RR 或 AC 或 RC 的特定匹配是我尝试的正则表达式,但它的广泛匹配只要找到这些字母中的一个

(##[^\n]*\n)|(\(CR (\d+))\) [AC\RR\RC\] [0-9]+.

此外,我尝试使用引号括住每对字母,如下所示;

(##[^\n]*\n)|(\(CR (\d+))\) ["AC"\"RR"\"RC"\] [0-9]+.

它仍然是一个广泛的匹配

标签: regex

解决方案


您可以匹配前导 ## 后跟该行的其余部分,并使用单个捕获组来匹配 3 个备选方案之一:

^##.*\n\(CR \d+\) (R[RC]|AC) \d+\.

解释

  • ^字符串的开始
  • ##.*\n匹配##,该行的其余部分和换行符
  • \(CR \d+\) 匹配(CR和空格,1+ 位和)
  • (捕获组 1
    • R[RC]|AC匹配RRRCAC
  • )关闭组 1
  • \d+.匹配一个空格、1+ 个数字和一个点

正则表达式演示


推荐阅读