Ответ 1
.
соответствует любому символу. Побег .
используя \
to match .
буквально.
\
сам также должен быть экранирован:
> gsub("\\.", "_", "a.b")
[1] "a_b"
У меня строка говорит "ab", и я хочу заменить ".". с "_".
gsub(".","_","a.b")
не работает. соответствует всем символам.
gsub("\.","_","a.b")
Просто дает мне ошибку.
Чтение документации на? Gsub не так уж полезно!
Итак, как это сделать прямолинейно?
.
соответствует любому символу. Побег .
используя \
to match .
буквально.
\
сам также должен быть экранирован:
> gsub("\\.", "_", "a.b")
[1] "a_b"
Вам нужно удвоить escape \\
, ускользая .
чтобы соответствовать буквальной точке и экранировать \
. Имейте в виду, что с помощью 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"
Вы также можете использовать sub
или gsub
с параметром fixed = TRUE
. Это берет строку, представляющую шаблон, который вы ищете, поскольку он игнорирует специальные символы.
string <- "a.b"
sub('.', '_', string, fixed = TRUE)
[1] "a_b"
попробуйте вот так:
gsub("[.]","_","a.b")
Попробуйте синтаксис regex [[: punct:]], например ".". сам по себе является символом пунктуации, присутствующим в строке.
gsub("[[:punct:]]","_","a.b")
Выход: [1] "a_b"