如何在一个正则表达式中组合多个条件 - PHP

时间:2016-06-06 05:04:56

标签: php regex preg-replace

以下是我有http://regexr.com/3dii7

的示例

我想删除括号中的所有内容(<>{}),但|b}|URL}

结尾的内容除外

第一个工作模式是{.*[^\\|b]}

第二种工作模式是{(((?!\|URL).)*?)}

第三个<.*>

如何在一次preg_replace()电话中将它们组合在一起?

不应删除

{jelly3|b}
{jelly3|URL}
{文字列|b}
{文字列|URL}

我已经尝试了{.*[^\\|b]}|{(((?!\|URL).)*?)}|<.*>但它不起作用,它会删除每个{}。这是链接http://www.phpliveregex.com/p/fVF

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用两个负向前瞻似乎有效:

<.*>|\{(?!.*\|URL\})(?!.*\|b\}).*\}

或只有1个否定前瞻:

<.*>|\{(?!.*\|(?:URL|b)\}).*\}