0
我有两个字符串,我必须从中提取数据。我使用preg_replace
来做到这一点。但是,我不确定如何使最后的\s\:\:
可以匹配或不匹配。我试过{0,}
,但它不匹配第一个字符串,没有它最后一个字符串不匹配。正则表达式,创建子模式
$strings = array(
'13.02 - foobar1 bla bla :: 08.03.2013 - 23.12.2013',
'06.05 21:00 - " foobar2 bla bla "',
)
foreach($strings as $data){
$pattern = '/^(\d){2}\.(\d){2}\s?(\d){0,2}(\:)?(\d){0,2}\s\-(.*)(\s\:\:.*)?/i';
echo preg_replace($pattern, '$6', $data);
}
我期望能获得这两个字符串作为最终输出:
"foobar1 bla bla"
"" foobar2 bla bla ""
您当前的代码工作正常,并匹配两个字符串。检查[this](http://codepad.org/h0ofNAuO)。但是,在'$ strings'的声明中缺少';'。 –
对于第一个字符串,我需要删除“:: 08.03.2013 - 23.12.2013”部分 – WraithLux
做一个输入的例子和准确的预期输出将有很大的帮助... – Enissay