php正则表达式-需要捕获2个组

php正则表达式-需要捕获2个组,php,regex,html-parsing,Php,Regex,Html Parsing,我需要捕获2组:1-expr(可以为空);2-essi 请参阅下面的代码 $s = 'regular expr<span>essi</span>on contains'; function my_func($matches){ //I need 2 groups captured //$matches[1] - "expr" (see $s before span) - can be empty, but I still need to capture

我需要捕获2组:1-expr(可以为空);2-essi

请参阅下面的代码

$s = 'regular expr<span>essi</span>on contains';
function my_func($matches){

    //I need 2 groups captured
    //$matches[1] - "expr" (see $s before span) - can be empty, but I still need to capture it
    //$matches[2] - "essi" (between spans)
}
$pattern = "???";
echo preg_replace_callback($pattern, my_func, $s);
$s='regular expression contains';
函数my_func($matches){
//我需要抓到两组人
//$matches[1]-“expr”(请参见span之前的$s)可以为空,但我仍然需要捕获它
//$matches[2]-“essi”(跨间)
}
$pattern=“?”;
echo preg_replace_回调($pattern,my_func,$s);
$pattern=“~(\w*)(\w+)”;
这应该能奏效

如果第二个组也应该能够匹配空字符串,则用另一个
*
替换
+
。请注意,
\w
将匹配字母、数字和下划线。如果这太多或不够,请用适当的字符类替换它


还有一件事:我认为
preg\u replace\u callback
的语法要求您将函数名作为字符串提交。

好吧,我已经回答了,但我不鼓励这样做,所以仍然有一个问题:您尝试了什么?我想我尝试重新表述我的问题-我想我删除了这个问题。很抱歉浪费了你的时间。@Jeffz你说的重新措辞是什么意思?这不是你真正想要的吗?@Jeffz:如果你的问题是相同的,但经过澄清和重新措辞,那么只需编辑问题(单击问题标签下方的“编辑”链接),不要删除它;这对那些花时间试图帮助你的人来说是非常不礼貌的。清楚地解释你的问题,解释你尝试了什么,出了什么问题。@Jeffz,如果你指的是我对这个问题的评论的话。我不是故意粗鲁的。我只是想指出,在堆栈溢出问题上,解释您所做的尝试是一种常见的礼貌(400多次重复之后,您可能已经知道了这一点)。但我想,无论如何,如果你仍然包含这些信息,那么你的问题的价值会增加很多。这也会降低其他人否决它的可能性。@m.buettner我不是这么认为的。。。这里很晚了,我有点累
$pattern = "~(\w*)<span>(\w+)</span>~";