为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕码人8056858 2022-06-11 18:59:44
我有一个包含 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 引擎如何逐步使用一些示例输入字符串并执行匹配过程。


查看完整回答
反对 回复 2022-06-11
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信