如何在R中提取带有特殊字符的模式之间的字符串[重复]
Posted
技术标签:
【中文标题】如何在R中提取带有特殊字符的模式之间的字符串[重复]【英文标题】:How to extract string between to patterns with special characters in R [duplicate] 【发布时间】:2020-12-06 08:24:33 【问题描述】:从字符串a
我想提取|Request|
和下一次出现的|
之间的所有内容:
a <- "|Request|\nSample inlet port of the HIP cartridge with |overflow| formed "
gsub(".*\\|Request\\| (.+) |.*", "\\1", a)
以这种方式应用 gsub 并没有产生预期的结果。我该怎么做呢?
【问题讨论】:
您可以使用捕获组\|Request\|([^|]+)
regex101.com/r/zmUIM0/1获取值
stringr::str_match(a, "\\|Request\\|([^|]+)")[,2]
【参考方案1】:
你需要使用惰性点,而且你的输入模式应该匹配整个输入,因为你要替换为捕获组:
a <- "|Request|\nSample inlet port of the HIP cartridge with |overflow| formed "
sub("^.*\\|Request\\|\\s*(.+?)\\s*\\|.*$", "\\1", a)
[1] "Sample inlet port of the HIP cartridge with"
【讨论】:
如果 |-symbol 之后不再出现,我想获取从第一个匹配到结束的子字符串。我怎么能这样做? 我没有足够的样本输入来提出足够好的替代正则表达式,甚至值得在这里发表评论。【参考方案2】:您可以使用sub
捕获|Request|
之后的所有内容,直到下一个|
出现。
sub(".*\\|Request\\|(.*?)\\|.*", "\\1", a)
#[1] "\nSample inlet port of the HIP cartridge with "
【讨论】:
以上是关于如何在R中提取带有特殊字符的模式之间的字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章