1
我使用反向引用來擺脫變量名向量中的意外重複。我遇到的第一種情況下的名稱具有類似的重複模式R正則表達式匹配/省略幾個重複
x <- c("gender_gender-1", "county_county-2", "country_country-1997",
"country_country-1993")
重複總是由下劃線分隔,並且只有一個重複消除。它們總是從文本的開頭開始。檢查正則表達式食譜,2ED後,我來到了問題的解答:
> gsub("^(.*?)_\\1", "\\1", x)
[1] "gender-1" "county-2" "country-1997" "country-1993"
我很擔心未來的情況下,可能有破折號或空格作爲分隔符,所以我想概括了一下匹配。我解決了這個問題。
> x <- c("gender_gender-1", "county-county-2", "country country-1997",
+ "country,country-1993")
> gsub("^(.*?)[,_\ -]\\1", "\\1", x)
[1] "gender-1" "county-2" "country-1997" "country-1993"
到目前爲止,總勝利。
現在,如果在某些情況下有三個重複,那麼正確的修正是什麼?在這一個中,我希望「鄉村國家」成爲一個「國家」。
> x <- c("gender_gender-1", "county-county-county-2")
> gsub("^(.*?)[,_\ -]\\1", "\\1", x)
[1] "gender-1" "county-county-2"
我願意用「_」替代所有的分隔符,如果這樣可以更容易地擺脫重複的單詞。
是什麼的'用處/含義:'? – Gilles
@Gilles:'(?:...)'是一個[非捕獲組](http://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group-what-does-一個-問號-隨後逐一個冒號)。它僅用於對子模式進行分組,而不將子匹配保留在內存中。 –
謝謝。這將花費我很長時間才能弄清楚。 – pauljohn32