删除数字前的模式并保留这些数字

时间:2017-11-27 13:26:27

标签: r regex

我有一个字符串

text = "Math\n      \n      \n        600 rubles / 45 min."
text2 = "Math\n      \n      \n        in a group"

我希望仅在数字跟随时将\n \n \n替换为" "。 因此,我希望:

"Math 600 rubles / 45 min."
"Math\n      \n      \n        in a group"

我尝试了gsub("\n \n \n [\\d]", " ", text),但它也替换了第一个数字。

2 个答案:

答案 0 :(得分:3)

我想出了以下模式:

gsub("\\n[[:blank:]]*\\n[[:blank:]]*\\n[[:blank:]]*(\\d+)", " \\1", text)

此模式连续匹配三个换行符,以数字结尾。它允许每个换行符之间的任意和不固定数量的空格。这使匹配变得灵活,并有助于避免错误地计算空间(或新的传入数据不按预期行为)。

我当前调用gsub时遇到的主要问题是您在换行符之间使用固定宽度的空格。此外,[\\d]从未用于替换。因此,您正在使用该数字,但它不会显示替换。

Demo

答案 1 :(得分:2)

text =c("Math\n      \n      \n        600 rubles / 45 min.","Math\n      \n      \n        in a group")
gsub('((\n\\s+){1,})(?=\\d)',' ',text,perl=T)
#[1] "Math 600 rubles / 45 min."                "Math\n      \n      \n        in a group"