Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用正则表达式从一组复杂的字符串中提取此文本?_Php_Regex - Fatal编程技术网

Php 如何使用正则表达式从一组复杂的字符串中提取此文本?

Php 如何使用正则表达式从一组复杂的字符串中提取此文本?,php,regex,Php,Regex,我要提取的内容 芹菜条、梨、草莓、燕麦粥、龙舌兰、全脂牛奶、蛋白粉、鳄梨、蘑菇、特级初榨橄榄油 我尝试过的 (^...*(\d | oz |\(| tsp |½| of)of)(,|\().$) 我得到的 运行时,单击“预拆分”选项卡 理想情况下,我应该能够进行匹配[0]并获得名称。您可以在preg\u match或preg\u match\u所有功能中使用此正则表达式: 6 celery sticks, chopped 1 pear 300g/10.6oz strawberries 50g

我要提取的内容

芹菜条、梨、草莓、燕麦粥、龙舌兰、全脂牛奶、蛋白粉、鳄梨、蘑菇、特级初榨橄榄油

我尝试过的

(^...*(\d | oz |\(| tsp |½| of)of)(,|\().$)

我得到的

运行时,单击“预拆分”选项卡


理想情况下,我应该能够进行匹配[0]并获得名称。

您可以在
preg\u match
preg\u match\u所有功能中使用此正则表达式:

6 celery sticks, chopped
1 pear
300g/10.6oz strawberries
50g (1.7oz) porridge oats (uncooked)
1 tsp agave
100ml (3.4oz) Whole milk (soy/almond/rice/hemp/oat)
1 scoop of protein powder (approx. 20g/0.7oz)
½ avocado
100g/3.5oz of mushrooms, chopped
1 tsp extra virgin olive oil 

正则表达式详细信息:

  • ^
    :开始
  • [\d½]+
    :匹配1+位或
    ½
  • \S*
    :匹配0个或多个非空格字符
  • \h+
    :匹配1+个水平空格
  • (?:\([^)]*\)\tsp |*of\b)?\h*
    :匹配额外的字符位
  • ([a-z]+(?:\h+[a-z]+)*)
    :匹配成分名称

评论不适用于长时间的讨论;此对话已结束。
^[\d½]+\S*\h+(?:\([^)]*\)|tsp|.*? of\b)?\h*([a-z]+(?:\h+[a-z]+)*)