首页 > 解决方案 > 使用正则表达式从 R 中删除不需要的 html 标签

问题描述

我有以下字符串:

aaa<-"\n                                                        \n                                                            267 Oberlin St.\n                                                            \n                                                            New York, New York\n                                                            \n                                                            US, 10018\n                                                        \n                                                    "

我怎样才能摆脱\n和空白的空间?

我尝试了以下方法:

str_replace_all(aaa, "[\n]", "")
[1] "                                                                                                                

    267 Oberlin St.                                                                                                                        New York, New York                                                                                                                        US, 10018  

str_replace_all(aaa, " ", "")
[1] "\n\n267OberlinSt.\n\nNewYork,NewYork\n\nUS,10018\n\n"

str_replace_all(aaa, "[ \n ]", "")
[1] "267OberlinSt.NewYork,NewYorkUS,10018"

我正在寻找的是以下内容:

"267 Oberlin St. New York, New York US, 10018"

标签: htmlrregex

解决方案


如果我们假设您需要删除任何 0+ 空格后跟一个换行符,然后是 3 个或更多空格,您可以使用

> trimws(gsub(" *\n {3,}", " ", aaa))
[1] "267 Oberlin St.  New York, New York  US, 10018"

或者,更准确一点,可以重复换行 + 3 或更多空格模式:

> trimws(gsub(" *(?:\n {3,})+", " ", aaa))
[1] "267 Oberlin St. New York, New York US, 10018"

图案细节

  • *- 0 个或多个空格
  • (?:\n {3,})+- 匹配 1 个或多个重复项的非捕获组:
    • \n - 换行符
    • {3,}- 3 个或更多空间

要匹配任何水平空格,您可以将模式中的文字空格替换为[[:blank:]],或者\h添加perl=TRUE.


推荐阅读