除以# 开头的单词外,用于删除数字的正则表达式

cas*_*a95 8 regex r gsub stringr

我有一些可以包含字母、数字和“#”符号的字符串。

我想删除除以“#”开头的单词以外的数字

下面是一个例子:

"table9 dolv5e #10n #dec10 #nov8e 23 hello"
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

"table dolve #10n #dec10 #nov8e  hello"
Run Code Online (Sandbox Code Playgroud)

如何使用 regex、stringr 或 gsub 执行此操作?

bob*_*ble 6

如何捕获想要的并用空的(未捕获的)替换不需要的。

gsub("(#\\S+)|\\d+","\\1",x)
Run Code Online (Sandbox Code Playgroud)

请参阅 regex101 中的演示tio.run 中的R 演示(我没有 R 经验)

我的答案是假设#foo bar #baz2. 如果您有类似的东西#foo1,bar2:#baz3 4,请使用\w(单词字符)而不是\S(非空格)。


use*_*226 5

您可以在空格上拆分字符串,如果标记不以“#”开头并粘贴回,则从标记中删除数字:

x <- "table9 dolv5e #10n #dec10 #nov8e 23 hello"
y <- unlist(strsplit(x, ' '))
paste(ifelse(startsWith(y, '#'), y, sub('\\d+', '', y)), collapse = ' ')
# output 
[1] "table dolve #10n #dec10 #nov8e  hello"
Run Code Online (Sandbox Code Playgroud)