繁体   English   中英

用于匹配短语后跟特定数字后跟特定字符串的正则表达式

[英]Regex for matching a phrase followed by certain numbers followed by certain string

另一个我无法解决的正则表达式问题。 :/

我有以下输入向量:

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

我现在想做以下比赛:

  • 找到短语“Q18r”
  • 后跟任意数字 1、2、3、10、11、12、997 即
  • 后跟短语“c1”

问题是我无法弄清楚如何在末尾添加“c1”,即我至少在前两场比赛中让它工作:

stringr::str_subset(x, "Q18r(?=[1-3]|1[1-2])|(997)")

我尝试了很多不同的 c1 匹配,即(?=c1) ,只有c1(c1)等,但没有任何效果。

有任何想法吗?

您可以使用

stringr::str_subset(x, "Q18r(?:[1-3]|1[1-2]|997)c1")
[1] "Q18r1c1"   "Q18r2c1"   "Q18r3c1"   "Q18r11c1"  "Q18r12c1"  "Q18r997c1"

正则表达式详细信息

  • Q18r - 固定的Q18r字符串
  • (?:[1-3]|1[1-2]|997) - 匹配1231112997非捕获组
  • c1 - 一个c1字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM