preg匹配两个字符串

时间:2018-03-20 21:24:08

标签: php regex

我需要这个preg比赛的帮助。我从其他帖子尝试了这个,但没有得到结果。所以最后发布它。

我正在尝试从第一个中提取z,a,b,从第二个例子中提取a

1)用参数 z,a,b 编写函数操作并返回b。

2)使用参数 a 编写函数factorial。

这是我到目前为止所尝试的:

 preg_match_all('/\parameter(.*?)\and?/', $question, $match);
          $questionVars = $match[1];
          print $questionVars;

非常感谢你!

1 个答案:

答案 0 :(得分:1)

根据实际要求,您的解决方案可能会有所不同。

如果您需要parameter之后的字符串作为整个单词,可以包含单词和逗号字符,您可以使用

preg_match('~\bparameter\s+\K\w+(?:\s*,\s*\w+)*~', $s, $m)

请参阅regex demo\bparameter\s+匹配字边界parameter和1 +空格字符,并且在匹配重置运算符\K的帮助下省略了所有这些文本。 \w+(?:\s*,\s*\w+)*匹配并返回1+个字符,后跟0+重复的逗号,用可选的空白字符和1个字符字符包围。

如果您打算单独获取这些以逗号分隔的块,请使用

preg_match_all('~(?:\G(?!^)\s*,\s*|\bparameter\s+)\K\w+~', $s, $m)

another regex demo。在此处,(?:\G(?!^),\s*|\bparameter\s+)会将整个单词parameter与(\bparameter\s+之后的1 +空格匹配,如上一个解决方案中所述)或上一次成功匹配,的结尾用可选的空格字符(\G(?!^)\s*,\s*)括起来。 \K将省略到目前为止匹配的文字,\w+将获取该值。您可以使用[^,]*替换以获取除逗号之外的0+字符。