2013-11-25 40 views
1

我想在R中做一個gsub替換。我想識別兩個由單個空白分隔的列表中的兩個術語並將其替換爲下劃線。我已經成功地確定了匹配,但我沒有足夠的正則表達式來理解gsub文檔。有人可以幫助編寫gsubGsub正則表達式替換

現在我有:

gsub("(a|b|c)\\s+(x|y|z)","(a|b|c)_(x|y|z)",a x) 

(注:有字符串中匹配這一點,如果該事項的幾個地方)

我想去來自:
斧 - > A_X
bz - > b_z
hello world bx你是怎麼樣的 - >你好,世界b_x怎麼是a_z你...等等。

相反,它的作用:
斧 - >(A | B | C)(X | Y | Z)
BZ - >(A | B | C)
(X | Y | Z).. 。 等等。

如果有人想放棄一點理論,將不勝感激,但我正在工作的最後期限,所以同時回答將是理想的。

謝謝。

+0

寫這個問題可能花費更多的時間,而不是通過'gsub'文件找到答案。它甚至有使用'\\ 1','\\ 2'等的示例。 – flodel

回答

2

您必須使用\\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" 
+0

謝謝。文檔使得它聽起來像「\\ ​​1」是爲了指某些地方的背景數量。細分如何實際完成?它只是自動分隔空間嗎? – user3030872

+0

@ user3030872正如我在答案中已經提到的,'\\ 1'是第一個'()'中的字符串。 –