R: Trim 括号内的空格
R: Trim whitespace within brackets
如何去除括号内的空格?
x <- c("the li7(li7, p)b13 reaction")
在这种特殊情况下,它应该只删除逗号和 p 之间的空格,但我正在寻找通用解决方案。
好的,我在 stringr
-package 中找到了使用 str_extract()
的解决方案。
gsub("\(+.*[[:blank:]]+.*\)+",
gsub("[[:blank:]]", "",
str_extract(x, "\(+.*[[:blank:]]+.*\)+")),x)
这使用 gsub()
搜索括号内有空格的字符串模式,然后使用另一个 gsub 将其替换为没有空格的提取部分。
编辑:如果括号内的模式包含 [[:graph:]]
系列未涵盖的内容,您可能需要更改表达式的那部分。
编辑中的编辑:将 [[:graph:]]
切换为 .
,因此现在应该可以处理几乎所有内容。
cases <-c(
"(a,b)",
"(a, b)",
"( a, b)",
"a(a, b)",
"a (a, b)",
"a (a, b) a(a,b) a(a,b )"
)
gsub("[[:space:]](?=[^()]*\))", "", cases, perl = TRUE)
[1] "(a,b)" "(a,b)" "(a,b)"
[4] "a(a,b)" "a (a,b)" "a (a,b) a(a,b) a(a,b)"
正则表达式的工作原理如下:当它找到 space 时,它会向前查找右括号。如果在途中发现任何其他括号,它会停止并继续前进,直到找到 space 和 none。它用空字符串替换它。
如何去除括号内的空格?
x <- c("the li7(li7, p)b13 reaction")
在这种特殊情况下,它应该只删除逗号和 p 之间的空格,但我正在寻找通用解决方案。
好的,我在 stringr
-package 中找到了使用 str_extract()
的解决方案。
gsub("\(+.*[[:blank:]]+.*\)+",
gsub("[[:blank:]]", "",
str_extract(x, "\(+.*[[:blank:]]+.*\)+")),x)
这使用 gsub()
搜索括号内有空格的字符串模式,然后使用另一个 gsub 将其替换为没有空格的提取部分。
编辑:如果括号内的模式包含 [[:graph:]]
系列未涵盖的内容,您可能需要更改表达式的那部分。
编辑中的编辑:将 [[:graph:]]
切换为 .
,因此现在应该可以处理几乎所有内容。
cases <-c(
"(a,b)",
"(a, b)",
"( a, b)",
"a(a, b)",
"a (a, b)",
"a (a, b) a(a,b) a(a,b )"
)
gsub("[[:space:]](?=[^()]*\))", "", cases, perl = TRUE)
[1] "(a,b)" "(a,b)" "(a,b)"
[4] "a(a,b)" "a (a,b)" "a (a,b) a(a,b) a(a,b)"
正则表达式的工作原理如下:当它找到 space 时,它会向前查找右括号。如果在途中发现任何其他括号,它会停止并继续前进,直到找到 space 和 none。它用空字符串替换它。