preg_match_all除非标签有类

时间:2016-08-14 15:58:41

标签: php regex

我有一个正则表达式替换了我的文本中的短代码。

[test_code]

<textarea class="ignoreShortCodes">[test_code]</textarea>

现在两个[test_code]块都将被替换,但我不希望这样。

现在这是我的正则表达式:

/\[([a-zA-Z0-9_-]+)\s?([^\]]*)\]/is

请注意,短代码可以包含以下参数:

[test_code name="test"]

谁可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻:

/^(?!.*ignoreShortCodes).*\\[([a-zA-Z0-9_-]+)\\s?(?:[^\\]]*)\\]/im

将匹配不包含类ignoreShortCodes

的每个lignes