Gsub регулярное выражение замена
Я пытаюсь выполнить замену gsub в R. Я хотел бы выделить два термина из двух списков, разделенных одним пробелом, и заменить его подчеркиванием. Я успешно определил соответствие, но у меня недостаточно опыта в регулярных выражениях, чтобы понять документацию gsub. Может кто-нибудь помочь написать gsub
?
Прямо сейчас у меня есть:
gsub("(a|b|c)\\s+(x|y|z)","(a|b|c)_(x|y|z)",a x)
(Примечание: в строке есть несколько мест, которые соответствуют этому, если это имеет значение)
Я хочу перейти от:
топор -> a_x
bz -> b_z
Привет, мир, bx, как дела, ты -> Привет, мир, b_x, как дела, ты... и так далее?
Вместо этого это делает:
топор -> (a | b | c) (x | y | z)
bz -> (a | b | c) (x | y | z)... и так далее.
Если кто-то захочет добавить небольшую теорию, это будет оценено, но я работаю над крайним сроком, поэтому одновременный ответ будет идеальным.
Благодарю.
1 ответ
Вы должны использовать \\1
а также \\2
заменить термин внутри первого и второго ()
с собой.
vec <- "hello world b x how are a z you"
gsub("(a|b|c)\\s+(x|y|z)","\\1_\\2", vec)
# [1] "hello world b_x how are a_z you"