我被卡住了。并不是说我是一个正则表达式,事实上恰恰相反。但我无法解决看似明显的任务。使用正则表达式从字符串中提取标签
原始字符串:
tag:tag1; tag:tag2;tag:tag3; tag:tag4
我需要提取标签,即“标签”之间的一切,接下来的分号(或行的最后标记的结束)。迄今为止我能得到的最好的结果是:
{tag:(?P<tag>[^;]+)(;|$)}i
即,从“tag:”开始,然后允许除分号之外的任何符号,然后以分号或行尾结束。并做不区分大小写的匹配。但随着双方preg_match
和preg_match_all
,我只得到与此正则表达式:(
另一种第一标签(但不循环)方法来实现我想要什么,一个标签的字符串数组,用PHP也算。
你的正则表达式和'preg_match_all()'工作就好了。 – mario 2014-10-12 12:46:18
我未能重现此行为。 – Unihedron 2014-10-12 12:47:11
不能删除标签:然后使用explode(“;”,$ string); ? – 2014-10-12 12:47:23