R:如何更换。在一个字符串?

时间:2013-12-01 07:38:34

标签: regex r

我有一个字符串说“a.b”,我想替换“。”用“_”。

gsub(".","_","a.b")

不起作用。匹配所有字符。

gsub("\.","_","a.b")

给我一​​个错误。

阅读?gsub上的文档没有用处!

那么如何直截了当地做这件事呢?

5 个答案:

答案 0 :(得分:21)

.匹配任何字符。使用.转义\,以字面上匹配.

\本身也应该被转义:

> gsub("\\.", "_", "a.b")
[1] "a_b"

答案 1 :(得分:7)

您需要加倍转义\\,转义.以匹配文字点并转义\。请注意,使用sub替换第一次出现的模式,gsub会替换所有出现的内容。

string <- "a.b"
sub('\\.', '_', string)
[1] "a_b"

string <- "a.b.c.d.e.f"
gsub('\\.', '_', string)
[1] "a_b_c_d_e_f"

您还可以将subgsubfixed = TRUE参数一起使用。这将获取表示您正在搜索的模式的字符串,因为它忽略了特殊字符。

string <- "a.b"
sub('.', '_', string, fixed = TRUE)
[1] "a_b"

答案 2 :(得分:3)

尝试这样:

gsub("[.]","_","a.b")

答案 3 :(得分:3)

尝试[[:punct:]]正则表达式语法,为“。”本身就是字符串中存在的标点字符。

gsub("[[:punct:]]","_","a.b")

输出:[1] "a_b"

答案 4 :(得分:0)

如果您更喜欢使用 stringrtidyverse 软件包的一部分)

str_replace_all("ghyg.lo.poi","[.]","_")