我試圖從給定的文本中創建一個新的價格向量。我只能使用gsub
。R gsub&正則表達式查找價格
test = c('Testing $26,500\ntesting',
'Testing tesing $79+\n TOTAL: $79200',
'Testing $3880. Testing',
'Testing -$69000Engine: $69000100%',
'Testing testing original price : $ 8 2 9 5 . Real price is $ 7 4 9 5')
所需的輸出:
# [1] 26500 79200 3880 69000 7495
我已經試過多次的正則表達式,但我不能得到正確的結果。
第一次嘗試:
gsub(".*\\$(\\d+)[,|.](\\d+).*", "\\1\\2", test)
# [1] "26500"
# [2] "Testing tesing $79+\n TOTAL: $79200"
# [3] "Testing $3880. Testing"
# [4] "Testing -$69000Engine: $69000100%"
# [5] "Testing testing original price : $ 8 2 9 5 . Real price is $ 7 4 9 5"
第二次嘗試:
gsub(".*\\$(\\d+)[,|.].*", "\\1", test)
# [1] "26"
# [2] "Testing tesing $79+\n TOTAL: $79200"
# [3] "3880"
# [4] "Testing -$69000Engine: $69000100%"
# [5] "Testing testing original price : $ 8 2 9 5 . Real price is $ 7 4 9 5"
第三次嘗試:
gsub("(?:.*|.*?*)\\$([0-9]+).*", "\\1", test)
# [1] "26"
# [2] "79200"
# [3] "3880"
# [4] "69000100"
# [5] "Testing testing original price : $ 8 2 9 5 . Real price is $ 7 4 9 5"
第四次嘗試:
gsub(".*[-]\\$(\\d+).*", "\\1", test)
# [1] "Testing $26,500\ntesting"
# [2] "Testing tesing $79+\n TOTAL: $79200"
# [3] "Testing $3880. Testing"
# [4] "69000"
# [5] "Testing testing original price : $ 8 2 9 5 . Real price is $ 7 4 9 5"
問題:如何解決此問題並避免使用多個gsub
函數調用?
@akrun:不,它不是作業。我已閱讀這篇文章[鏈接](http://stackoverflow.com/questions/31288513/removing-characters-after-a-euro-symbol-in-r)。我試着想出更多的例子來測試它。由於我在R中學習正則表達式,因此我不想用包stringr來嘗試它。 –
你知道你可以複製/粘貼控制檯而不是所有的圖片。您和我們都更輕鬆。 –
@Richard Scriven:我很抱歉給您帶來不便。我只是最近使用了stackoverflow。但是,只有結果是截圖,所有的代碼都在代碼塊中。 –