我已经搜索了相当多的内容,似乎找不到一种方法来获得类似“和”之类的内容,并将其排除在如下条目中:
番茄泥(水,番茄酱),焦糖色,山梨酸钾和EDTA二钠钙,糖蜜,玉米糖浆,糖,香料,罗望子,天然风味。
我现在的正则串可以捕捉所有的东西,但我不知道如何使它分裂“山梨酸钾”和“EDTA二钠钙”。我现在拥有的是:
[\(,\)\s]*\s*([^,\)\(\.]+)\s*[\.,\)\s\(]顺便说一句,这是PHP中的,在找到匹配之后,我不想分割它。
发布于 2012-06-16 21:45:12
代码:
$text = 'TOMATO PUREE (WATER, TOMATO PASTE), CARAMEL COLOR, POTASSIUM SORBATE AND CALCIUM DISODIUM EDTA, MOLASSES, CORN SYRUP, SUGAR, SPICES, TAMARIND, NATURAL FLAVOR.';
$array = preg_split('/\)?, | \(|, | AND |\./', $text, -1, PREG_SPLIT_NO_EMPTY);
var_dump($array);输出:
array(13) {
[0]=>
string(12) "TOMATO PUREE"
[1]=>
string(5) "WATER"
[2]=>
string(12) "TOMATO PASTE"
[3]=>
string(13) "CARAMEL COLOR"
[4]=>
string(17) "POTASSIUM SORBATE"
[5]=>
string(21) "CALCIUM DISODIUM EDTA"
[6]=>
string(8) "MOLASSES"
[7]=>
string(10) "CORN SYRUP"
[8]=>
string(5) "SUGAR"
[9]=>
string(6) "SPICES"
[10]=>
string(8) "TAMARIND"
[11]=>
string(14) "NATURAL FLAVOR"
}发布于 2012-06-16 21:31:54
我拿到了这个:
$str = "TOMATO PUREE (WATER, TOMATO PASTE), CARAMEL COLOR, POTASSIUM SORBATE AND CALCIUM DISODIUM EDTA, MOLASSES, CORN SYRUP, SUGAR, SPICES, TAMARIND, NATURAL FLAVOR.";
$array = preg_split("/\s*(,|AND)\s*/i", $str);
print_r($array);产出:
Array
(
[0] => TOMATO PUREE (WATER
[1] => TOMATO PASTE)
[2] => CARAMEL COLOR
[3] => POTASSIUM SORBATE
[4] => CALCIUM DISODIUM EDTA
[5] => MOLASSES
[6] => CORN SYRUP
[7] => SUGAR
[8] => SPICES
[9] => TAMARIND
[10] => NATURAL FLAVOR.
)发布于 2012-06-16 21:40:16
如果你想和regex一起去的话,那就是真相解决方案。它还同时处理空白。
如果您不理解正则表达式,作为替代解决方案,您可以:
此解决方案使用您应该能够使用的简单字符串函数。
最后,您可能希望使用函数纵倾删除不需要的空白字符。
https://stackoverflow.com/questions/11067143
复制相似问题