簡體   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