You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

匹配Q18r+指定数字+c1格式字符串的正则表达式求解

正则表达式匹配解决方案

你的问题出在原正则的逻辑拆分错误,导致条件没有正确关联,而且没把c1的要求和前面的规则整合起来。

正确的正则表达式逻辑

要同时满足三个条件,需要把规则连贯起来:

  • 以Q18r开头
  • 紧跟指定数字:1/2/3/10/11/12/997
  • 最后以c1结尾

对应的正则表达式为:^Q18r(1[0-2]|[1-3]|997)c1$

各部分解释:

  • ^:匹配字符串起始位置
  • Q18r:匹配固定短语
  • (1[0-2]|[1-3]|997):分组匹配目标数字:
    • 1[0-2]:覆盖10、11、12
    • [1-3]:覆盖1、2、3
    • 997:单独匹配997
  • c1:匹配结尾的固定短语
  • $:匹配字符串结束位置

完整代码示例

library(stringr)
x <- c("test", paste0(rep(paste0("Q18r", c(1:14, 997)), each = 2), c("c1", "c2")))

# 执行匹配
result <- str_subset(x, "^Q18r(1[0-2]|[1-3]|997)c1$")
print(result)

运行后会输出所有符合要求的字符串:Q18r1c1、Q18r2c1、Q18r3c1、Q18r10c1、Q18r11c1、Q18r12c1、Q18r997c1

如果你的场景中目标模式只是字符串的一部分(而非整个字符串就是该模式),可以去掉正则中的^和$,改为Q18r(1[0-2]|[1-3]|997)c1。

内容的提问来源于stack exchange,提问作者deschen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:20:37