我有一个包含 URL、标题、描述的长字符串,如下所示:||url:foo||title:Books|Pencils||description:my description||数据总是以||如何匹配可能包含(如上例所示)但不包含两个的标题( Books|Pencils)?|||我尝试了这样的规则(使用 php preg_match):#\|\|title:(.*)([\|\|])(.*)#
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
我猜,
(?<=\|\|title:).*?(?=\|\|)
可能只是这样做。
正则表达式演示 1
如果你想得到另外两个,
(?<=\|\|\burl:|\btitle:|\bdescription:).*?(?=\|\|)
正则表达式演示 2
测试
$re = '/(?<=\|\|\burl:|\btitle:|\bdescription:).*?(?=\|\|)/m';
$str = '||url:foo||title:Books|Pencils||description:my description||';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
输出
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "foo"
}
[1]=>
array(1) {
[0]=>
string(13) "Books|Pencils"
}
[2]=>
array(1) {
[0]=>
string(14) "my description"
}
}
如果您希望简化/更新/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。
- 1 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消