2014-04-03 39 views
0

我有以下文字:正則表達式 - 只能得到一些數字

<td width="300">38.625,00</td> 

我只希望輸出:38625

我使用

[\d,]+ 

返回30038625 ,00

我怎樣才能只選擇「第二和第三位」?

預先感謝您

+2

你不公頃是否有任何捕獲組?你使用什麼語言/環境?你想要什麼'38.625,99'? –

+0

單獨的字符串還是更多HTML的一部分?如果必須解析整個HTML頁面,這會更麻煩 – Robin

+0

這種格式的一致性如何?你是否也需要能夠匹配那些沒有逗號的東西? – ghoti

回答

0

不知道你的情況,但如果你想要做一個更換 -

查找:(?<=>)(\d+)\.(\d+)(?:,\d*)?(?=</td>)
替換:$1$2

(?<= >) 
(\d+)     # (1) 
\. 
(\d+)     # (2) 
(?: , \d*)? 
(?= </td>) 
+0

謝謝你的回答,我調整了後端部分,並且它可以接受「。」。現在也是。這意味着\ d + \。\ d +應該這樣做。標記你的答案是正確的。 – Helmer

1
echo '<td width="300">38.625,00</td>' \ 
    | sed -nEe 's/.*[^0-9.]([0-9.]+),[0-9]{2}.*/\1/;s/[^0-9]//p' 

當然,這兩次換人,但他們同時基於正則表達式。

如果你總是有格式化爲##.###,##號碼,你可以處理直接,在一個單一的正則表達式替換:

echo '<td width="300">38.625,00</td>' \ 
| sed -nEe 's/.*[^0-9]([0-9]+)\.([0-9]+).*/\1\2/p' 
相關問題