我正在編程清理數據,因爲它被輸入並需要提取項目的數量信息。對於每件商品,數量和數量單位之間需要有一個空格。有時它包含一個小數,有時一個破折號( - )在數量信息旁邊沒有幫助。破折號應該在它和數量信息之間插入一個空格或者完全刪除。正則表達式在各種實例中插入空間
我在下面包含的正則表達式將處理Milk條目,但是其他條目都不會。
注意:有時序列號是在字符串($str
),這就是爲什麼數量單位必須包括在preg_replace
的開始。
$str = "Chicken 4 lbs.";
$str = "Cream of Mushroom Soup 10.4oz";
$str = "4XY Milk 1gal";
$str = "Leaf Spinach -12oz";
$str = "5QB Bananas -6.2lb.";
$str = preg_replace('/(?<=[0-9])(?=[g|g.|oz|oz.|lb|lb.|gal|gal.|mL|mL.|kg|kg.|un|un.|tab|tab.])/',' ', $str);
編輯:在測試你的答案(!所有這一切的輝煌,順便說一句),我想出了一個額外的維度:如破折號( - )立即被字母數字字符之前,我做不想在它後面創建空間。
$str = "Route US-66 4 lb";
縮短到'(?<= [0-9])(?=(g | oz | lb | gal | mL | kg | un | tab)\。?)使得'.'可選。 – tenub