首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用regex解析成分列表时排除“和”

在用regex解析成分列表时排除“和”
EN

Stack Overflow用户
提问于 2012-06-16 21:25:55
回答 3查看 145关注 0票数 1

我已经搜索了相当多的内容,似乎找不到一种方法来获得类似“和”之类的内容,并将其排除在如下条目中:

番茄泥(水,番茄酱),焦糖色,山梨酸钾和EDTA二钠钙,糖蜜,玉米糖浆,糖,香料,罗望子,天然风味。

我现在的正则串可以捕捉所有的东西,但我不知道如何使它分裂“山梨酸钾”和“EDTA二钠钙”。我现在拥有的是:

代码语言:javascript
复制
[\(,\)\s]*\s*([^,\)\(\.]+)\s*[\.,\)\s\(]

顺便说一句,这是PHP中的,在找到匹配之后,我不想分割它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-16 21:45:12

代码:

代码语言:javascript
复制
$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);

输出:

代码语言:javascript
复制
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"
}
票数 2
EN

Stack Overflow用户

发布于 2012-06-16 21:31:54

我拿到了这个:

代码语言:javascript
复制
$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);

产出:

代码语言:javascript
复制
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.
)
票数 0
EN

Stack Overflow用户

发布于 2012-06-16 21:40:16

如果你想和regex一起去的话,那就是真相解决方案。它还同时处理空白。

如果您不理解正则表达式,作为替代解决方案,您可以:

  1. 用逗号替换每一个‘和’
  2. 使用逗号分隔符将字符串拆分为元素 $array = preg_split(",",str_replace(“AND ",$str));

此解决方案使用您应该能够使用的简单字符串函数。

最后,您可能希望使用函数纵倾删除不需要的空白字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11067143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档