2017-03-09 53 views
-1

我想了解反向引用,並且我認爲一個簡單的示例可以幫助我。匹配模式的正則表達式,但只替換R中的匹配部分

說我有字符串「每皮艇1 $每風箏出售+ 40K + $ 10」,並希望它是「每皮艇$ 1元風箏出售+ 40000 + $ 10」

我怎樣才能做到這一點的正則表達式R'我顯然不只是想用「000」替換「k」。我也不能只使用sub(),因爲匹配可能不是字符串中的第一個匹配項。

+0

好了,什麼是規則? 'k'前面加一個數字後跟一個字的邊界應該替換? –

+0

是的,基本上跟蹤使用「k」代表的成千上萬的數字。 –

+0

'\ 1'不會乘以任何東西,只會將結果與第一個「(...)」捕獲的子字符串放在一起。 –

回答

1

編輯:將基於@WiktorStribiżew的評論ignore.case

string = "$1 per kayak + 40k + $10 per kite sold" 
gsub("(\\b\\d+)k\\b", "\\1000", string, ignore.case=TRUE) 
[1] "$1 per kayak + 40000 + $10 per kite sold" 
+0

如果只有stackexchange爲我有的每個正則表達式問題都有答案。我想這將是regexchange ... –

+0

爲什麼不是一個更簡單的'gsub(「(\\ d)k \\ b」,「\\ 1000」,string)'?此外,'ignore.case = TRUE'也會有幫助。 –

+0

對於這個字符串,他們的工作原理是一樣的,我保護着一個字符串,比如「他的許可證號是G8K-4D2」。但你說得對,'ignore.case = TRUE'會有幫助。我會將其添加到解決方案中。 – G5W