正则表达式删除gsub R中标记之间的空格

时间:2016-01-10 14:32:20

标签: r gsub

如何删除标签之间的空格或制表,而不是从标签内部删除它,我尝试了gsub但没有成功

gsub("(^>)\\s(^<)", "", x)

给出一个字符串:

 "<div class=\"panel\">\n   <div class=\"shortcode\">\n\t    <div class=\"article-\"> text text text text </div> \n    </div>\n    </div>"

期望的输出:

<div class=\"panel\"><div class=\"shortcode\"><div class=\"article-\"> text text text text </div></div></div>

2 个答案:

答案 0 :(得分:2)

您可以尝试使用look around

gsub("(?<=\\>)(\\s*)(?=\\<)", "", x, perl = TRUE)
## [1] "<div class=\"panel\"><div class=\"shortcode\"><div class=\"article-\"> text text text text </div></div></div>"

答案 1 :(得分:1)

我们可以使用标签之间有\n这一事实,提供了特别简单的解决方案:

1)如果s是输入字符串,则:

gsub("\\s*\n\\s*", "", s)

(如果\t无法像问题那样出现在代码中,那么该模式可以替代地写为" *[\n\t] *"。)

2)另一种方式是:

paste(sapply(strsplit(s, "\n"), trimws), collapse = "")