我有以下文字:正則表達式 - 只能得到一些數字
<td width="300">38.625,00</td>
我只希望輸出:38625
我使用
[\d,]+
返回30038625 ,00
我怎樣才能只選擇「第二和第三位」?
預先感謝您
我有以下文字:正則表達式 - 只能得到一些數字
<td width="300">38.625,00</td>
我只希望輸出:38625
我使用
[\d,]+
返回30038625 ,00
我怎樣才能只選擇「第二和第三位」?
預先感謝您
不知道你的情況,但如果你想要做一個更換 -
查找:(?<=>)(\d+)\.(\d+)(?:,\d*)?(?=</td>)
替換:$1$2
(?<= >)
(\d+) # (1)
\.
(\d+) # (2)
(?: , \d*)?
(?= </td>)
謝謝你的回答,我調整了後端部分,並且它可以接受「。」。現在也是。這意味着\ d + \。\ d +應該這樣做。標記你的答案是正確的。 – Helmer
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'
你不公頃是否有任何捕獲組?你使用什麼語言/環境?你想要什麼'38.625,99'? –
單獨的字符串還是更多HTML的一部分?如果必須解析整個HTML頁面,這會更麻煩 – Robin
這種格式的一致性如何?你是否也需要能夠匹配那些沒有逗號的東西? – ghoti