我需要这个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;
非常感谢你!
答案 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+字符。