我有一個字符串:正則表達式匹配一個點前面的數字
Product, Q.ty: 1, Price: 120.00
我想選擇所有第一個逗號,直至最後兩位十進制數(.00)之後 - 或者,換句話說,請選擇Product
,這將會變化;什麼是不可變的是, Q.t
而且它也是已知的,字符串中的最後兩個字符將是兩個數字前面有一個點.
- 然而只有最後一個將總是0
,它之前的那個可以是任何東西0-9
,但總是一個數字。
我用這個字符串匹配:
preg_replace('/' . preg_quote(', Q.t') . '.*?' . preg_quote('.00') . '/', '', $data);
的問題是,它在最後兩位數字是不是00而是別的東西像50失敗,40,30等。如果我使用相同的正則表達式與單個數字'0',它不會工作,因爲它會趕上像我在前面的例子中的字符串中的第一個0,並將留下剩餘0.
如何調整此表達式以捕獲以'。'開頭的一組數字。點?
*還有一點需要注意:這個preg_replace位於foreach循環內;一些數據在我試圖通過的模式中不會匹配;沒關係,所以在這些情況下,我可以按照他們的方式打印字符串;但在有一個匹配的foreach的情況下,我想更換什麼也沒有字符串的一部分*
謝謝
作爲一個輕微的提示,你可以在正則表達式中使用'd'來匹配一個數字。 – Tro
你可能會顯示其他示例字符串,並讓我們知道還有什麼是靜態的,如**產品,**和**價格:**我假設。 – varubi
「產品」變化; 「,Q.t」將停留在那裏,字符串中的最後兩個字符將始終爲數字,並以點「。」開頭。 – unfulvio