如何用R中的"东西加特殊字符"替换许多特殊字符

wen*_*wen 2 regex string replace r

我有这句话包含"&/?".

c = "Do Sam&Lilly like yes/no questions?"
Run Code Online (Sandbox Code Playgroud)

我想在每个特殊字符之前和之后添加一个空格

"Do Sam & Lilly like yes / no questions ? "
Run Code Online (Sandbox Code Playgroud)

我只能通过艰难的方式得到这个:

c = gsub("[&]", " & ", c)
c = gsub("[/]", " / ", c)
c = gsub("[?]", " ? ", c)
Run Code Online (Sandbox Code Playgroud)

但想象一下,我有许多这些特殊的角色,保证使用[:alnum:].所以我真的在寻找一个看起来像这样的解决方案:

gsub("[[:alnum:]]", " [[:alnum:]] ", c)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不能以这种方式使用[:alnum:]作为第二个参数.

Bro*_*ieG 5

您可以使用捕获组引用:

gsub("([&/])", " \\1 ", c)
Run Code Online (Sandbox Code Playgroud)

在这里我们替换"&""/"用自己("\\1")填充空格.的"\\1"装置"使用第一个匹配组从所述图案.的匹配组是在括号中的正则表达式的一部分.在我们的例子中,"([&/])".

您可以通过将其添加到字符集或通过添加适当的正则表达式特殊字符来扩展它以覆盖更多符号/特殊字符.

注意:您可能不应该使用c变量名称,因为它也是一个非常常用的函数的名称.

  • @ user20650绝对,只需使用所需的正则表达集. (2认同)