我有一个字符串
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)
,但它也替换了第一个数字。
答案 0 :(得分:3)
我想出了以下模式:
gsub("\\n[[:blank:]]*\\n[[:blank:]]*\\n[[:blank:]]*(\\d+)", " \\1", text)
此模式连续匹配三个换行符,以数字结尾。它允许每个换行符之间的任意和不固定数量的空格。这使匹配变得灵活,并有助于避免错误地计算空间(或新的传入数据不按预期行为)。
我当前调用gsub
时遇到的主要问题是您在换行符之间使用固定宽度的空格。此外,[\\d]
从未用于替换。因此,您正在使用该数字,但它不会显示替换。
答案 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"