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"
Другие вопросы по тегам