猿问

正则表达式不匹配两个分隔符

我有一个包含 URL、标题、描述的长字符串,如下所示:

||url:foo||title:Books|Pencils||description:my description||

数据总是以||

如何匹配可能包含(如上例所示)但不包含两个的标题( Books|Pencils)?|||

我尝试了这样的规则(使用 php preg_match):

#\|\|title:(.*)([\|\|])(.*)#


慕码人8056858
浏览 122回答 1
1回答

当年话下

我猜,(?<=\|\|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) {&nbsp; [0]=>&nbsp; array(1) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(3) "foo"&nbsp; }&nbsp; [1]=>&nbsp; array(1) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(13) "Books|Pencils"&nbsp; }&nbsp; [2]=>&nbsp; array(1) {&nbsp; &nbsp; [0]=>&nbsp; &nbsp; string(14) "my description"&nbsp; }}如果您希望简化/更新/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。
随时随地看视频慕课网APP
我要回答