我試圖想出一個正則表達式,它將匹配一個價格並涵蓋所有基數。主要問題是(潛在的)逗號和小數位。價格正則表達逗號數千個
/^[^\d]*(?<price>\d+,?\d+\.\d+)/
是最好的,我來了這麼遠,但它不匹配£3.00,因爲這兩個\d+ \d+
可選的兩邊,我需要做左側\d+
可選。
(PHP的preg_match)
我已經解釋它是如何的不同您將其標示爲重複之前。在回答完成後將其標記爲重複的點是什麼? 。
我試圖想出一個正則表達式,它將匹配一個價格並涵蓋所有基數。主要問題是(潛在的)逗號和小數位。價格正則表達逗號數千個
/^[^\d]*(?<price>\d+,?\d+\.\d+)/
是最好的,我來了這麼遠,但它不匹配£3.00,因爲這兩個\d+ \d+
可選的兩邊,我需要做左側\d+
可選。
(PHP的preg_match)
我已經解釋它是如何的不同您將其標示爲重複之前。在回答完成後將其標記爲重複的點是什麼? 。
更改
\d+
到
\d*
的+
裝置一次或多次出現。 *
表示零或更多;或者用其他字可選。
甲錢的regexp與圖案組(?<price>(\d+((\.|\,)\d+)+))
來源:
<?php
$input_line = "
£3.00
£30.00
€34.020,00
£35,000
£12,345,6789.100
";
preg_match_all("/(?<price>(\d+((\.|\,)\d+)+))/", $input_line, $matches);
var_dump($matches['price']);
結果:
array(5) {
[0]=>
string(4) "3.00"
[1]=>
string(5) "30.00"
[2]=>
string(9) "34.020,00"
[3]=>
string(6) "35,000"
[4]=>
string(15) "12,345,6789.100"
}
闡釋爲/(?<price>(\d+((\.|\,)\d+)+))/
:
(?<price>(\d+((\.|\,)\d+)+))
命名捕獲組價格
第二捕獲組(\d+((\.|\,)\d+)+)
\d+
匹配一個數字[0-9]
與+爲一個和無限次之間
第三捕獲組((\.|\,)\d+)+
與+
4th捕獲組(\.|\,)
十幾本網站 –
愚弄它沒有像這個問題,這是非常具體如何匹配數字改爲可選。 –
不要只是斷言它不是重複的 - 編輯問題來解釋*其他答案如何不能解決您的具體問題。 – jonrsharpe