从字符串中。
我想提取 |-符号内字母后的文本。
我的方法是:
这对于除了最后一个单词“car”之外的所有单词都有效。它会返回整个字符串s。我该如何修改正则表达式,以便在words-list的最后一个元素中打印出“dolore magna aliqua.”?
\编辑:以前的表达式列表是a、b、c、d。针对这个特定问题的解决方案不能很好地推广。
s <- "|tree| Lorem ipsum dolor sit amet, |house| consectetur adipiscing elit,
|street| sed do eiusmod tempor incididunt ut labore et |car| dolore magna aliqua."
我想提取 |-符号内字母后的文本。
我的方法是:
words <- list("tree","house","street","car")
for(word in words){
expression <- paste0("^.*\\|",word,"\\|\\s*(.+?)\\s*\\|.*$")
print(sub(expression, "\\1", s))
}
这对于除了最后一个单词“car”之外的所有单词都有效。它会返回整个字符串s。我该如何修改正则表达式,以便在words-list的最后一个元素中打印出“dolore magna aliqua.”?
\编辑:以前的表达式列表是a、b、c、d。针对这个特定问题的解决方案不能很好地推广。
sub
很困惑,因为你必须指定你不想保留的内容,而不是(更自然的)你想要保留的内容。我建议使用stringi::stri_extract_all
,例如:stringi::stri_extract_all(regex = "(?<=\\|[abcd]\\| )([^\\|]+)", s)
。这使用了回顾后发来匹配|a|
、|b|
、|c|
和|d|
而不捕获它。 - Basa,b,c,d
而是tree,house,street,car
。我该怎么做? - volfi