Regex gsub跨R中的多条线(dotall)
是否可以在R中使用Regex gsub跨R中的多条线(dotall),regex,r,gsub,Regex,R,Gsub,是否可以在R中使用gsub调用dotall表达式?基本上,我试图提取一段跨越多行的文本。考虑下面的例子: eg.df <- c("----------", " ", "keep", " ", "keep this too", " ", "----------", " ", "Delete this line and everything after", "Delete this one too", " ", "And delete this one") 因此,产生的输出将
gsub
调用dotall表达式?基本上,我试图提取一段跨越多行的文本。考虑下面的例子:
eg.df <- c("----------", " ", "keep", " ", "keep this too", " ", "----------", " ",
"Delete this line and everything after", "Delete this one too",
" ", "And delete this one")
因此,产生的输出将是:
[1] "----------"
[2] " "
[3] "keep"
[4] " "
[5] "keep this too"
[6] " "
你可以试试
strsplit(sub('-+, +,[A-Za-z]+[^-]+$', '',
paste(eg.df, collapse= ',')), ',')[[1]]
#[1] "----------" " " "keep" " "
#[5] "keep this too" " "
或者正如@hwnd评论的那样
strsplit(sub('-+[^-]+\\z', '', paste(eg.df, collapse = '_'),
perl=T), '_')[[1]]
可能只是
eg.df[cumsum(grepl(“-”,eg.df))==0]
或类似的东西gsub
实际上与此无关,因为您有一个向量,而不是一个字符串。这可以工作,但我有其他带有-----------
的行需要保留。不确定您的意思。你能提供一个例子吗?刚刚更新了这个例子那么你如何决定删除第二个---
之后的所有内容而不是第一个?你能解释一下吗?我不明白OP想要什么。或者换句话说,这在概念上与我的建议有什么不同?@DavidArenburg我认为OP想要删除所有这些行,如果有一个带有模式“-----”的文本字符串,然后是“”,然后是一些文本字符串。因此,我所做的是,将例如.df
与分隔符粘贴为,
,并使用子中遵循这些模式的lookarounds
,并将其替换为'
。最后,strsplit
基于,
的字符串。我猜可能是这样的,虽然我不确定我会使用strsplit(sub('-+[^-]+\\z','',粘贴(例如,df,collapse='''.'''''.'),perl=T),'.'''.'''.[[1]]
@akrun-抱歉,我没有看到它被编辑以反映我所做的更改。
strsplit(sub('-+[^-]+\\z', '', paste(eg.df, collapse = '_'),
perl=T), '_')[[1]]