找到带有通用字符“ [a,z]-\ n”的子字符串,并替换子字符串“-\ n”的非通用部分

时间:2019-04-19 16:29:02

标签: r regex stringi

我有我正在R中清理的文本。我想使用stringi,但很高兴使用其他软件包。

其中一些单词分为两行。所以我得到一个子字符串“ halfword- \ nsecondhalfword”。

我也有一些只是“ ---- \ nword”和“-\ n”的字符串(以及其他一些我不想替换的字符串。

我想要做的是识别所有子字符串“ [a-z]-\ n”,然后保留通用字母[a,z],但删除-\ n字符。

我不想删除所有-\ n,也不想删除字母[a-z]。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用单词边界仅在两个单词字符之间匹配-<LF>

gsub("\\b-\n\\b", "", x)
gsub("(*UCP)\\b-\n\\b", "", x, perl=TRUE)
stringr::str_replace_all(x, "\\b-\n\\b", "", x)

后两个字符支持任何Unicode单词字符之间的单词边界。

请参见regex demo

如果您只想删除字母之间的-<LF>,则可以使用

gsub("([a-zA-Z])-\n([a-zA-Z])", "\\1\\2", x)
gsub("(\\p{L})-\n(\\p{L})", "\\1\\2", x, perl=TRUE)
stringr::str_replace_all(x, "(\\p{L})-\n(\\p{L})", "\\1\\2")

如果只需要支持小写字母,请在前A-Z中删除gsub,在后两个中将\p{L}替换为\p{Ll}

请参见this regex demo