我正在寻找gsub
的正则表达式来删除所有不需要的逗号:
数据:
,,,,,,,12345
12345,1345,1354
123,,,,,,
12345,
,12354
期望的结果:
12345
12345,1345,1354
123
12345
12354
这是我迄今取得的进展:
(,(?!\d+))
答案 0 :(得分:3)
您似乎想要删除所有前导和尾随逗号。
你可以用
来做gsub("^,+|,+$", "", x)
请参阅regex demo
正则表达式包含两个替换,^,+
在开头匹配1个或多个逗号,,+$
在末尾匹配1个以上的逗号,gsub
用空字符串替换这些匹配。< / p>
参见R demo
x <- c(",,,,,,,12345","12345,1345,1354","123,,,,,,","12345,",",12354")
gsub("^,+|,+$", "", x)
## [1] "12345" "12345,1345,1354" "123" "12345"
## [5] "12354"
答案 1 :(得分:2)
您还可以使用str_extract
中的stringr
。由于贪婪匹配,您不必指定数字出现的次数,自动选择最长匹配:
library(dplyr)
library(stringr)
df %>%
mutate(V1 = str_extract(V1, "\\d.+\\d"))
或者您更喜欢base R
:
df$V1 = regmatches(df$V1, gregexpr("\\d.+\\d", df$V1))
<强>结果:强>
V1
1 12345
2 12345,1345,1354
3 123
4 12345
5 12354
数据:强>
df = read.table(text = ",,,,,,,12345
12345,1345,1354
123,,,,,,
12345,
,12354")