如何在R中匹配给定开始和结束模式的字符串的多次出现?

ffscu2ro  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(100)
library(stringr)
string <- string <- c("pat1 hello333\n pat2 ok i mean pat1 again pat2 some more text pat1")

我想匹配所有以pat1开头并以pat2结尾的字符串。

> str_extract_all(
  string,
  regex(
    "pat1.+pat2",
    dotall=TRUE
  )
)
[[1]]
[1] "pat1 hello333\n pat2 ok i mean pat1 again pat2"

这给了我一个以pat1开始并以pat2结束的字符串。然而,我想要的输出是这样的:

> output
[1] "pat1 hello333\n pat2"
[2] "pat1 again pat2"
prdp8dxp

prdp8dxp1#

您可以将gregexprregmatchespat1.*?pat2一起使用,或者在它们应该位于字边界时使用\\bpat1.*?pat2\\b

regmatches(string, gregexpr("pat1.*?pat2", string))[[1]]
#[1] "pat1 hello333\n pat2" "pat1 again pat2"     

regmatches(string, gregexpr("\\bpat1.*?pat2\\b", string))[[1]]
#[1] "pat1 hello333\n pat2" "pat1 again pat2"

相关问题