使用正则表达式只能从文本中找到双花括号字

时间:2016-10-07 22:11:26

标签: php regex

我有这样的文字

Hello {{xyz}} how are {{abc}. I am {opq}} for your {{bpq}}.

从此文字中我只想找到除{{abc}{opq}}之外的{{xyz}}{{bpq}}。什么是php的正则表达式。

我试过这个

preg_match_all("/\{{(.*?)\}}/", $mytext, $matches);

1 个答案:

答案 0 :(得分:1)

您可以在PHP中使用此正则表达式使用PCRE动词(*SKIP)(*F),该动词用于在交替中跳过+失败匹配。

{{[^{}]*}}(*SKIP)(*F)|{{[^{}]*}|{[^{}]*}}

RegEx Demo

或者,您还可以使用基于环视的正则表达式:

{{[^{}]*}(?!})|(?<!{){[^{}]*}}
    如果下一个字符是} ,则
  • (?!})是未通过匹配的否定预测 如果先前的字符为{
  • ,则
  • (?<!})为比赛失败的负面观察