2

我已经尝试了很多方法来做到这一点,唯一似乎部分做我想要的方法是使用正则表达式的字符串否定如何在正则表达式中否定特定单词中描述的前瞻否定?但我无法让它与我当前的正则表达式一起使用。

假设我有这个字符串:

[url=http://www.example.com]this url BB tag should match[/url]
[url=http://www.example.com][spoiler]this url BB tag shouldn't match[/spoiler][/url]

编辑:更深入的字符串不应该返回匹配的调试:

[url=http://www.example.com]Lorem[spoiler]this url BB tag shouldn't match[/spoiler]Ipsum[/url]

和当前的正则表达式模式:

#\[url=([\w]+?://.*?)\]([^?\n\r\t].*?)\[/url\]#is

编辑:我正在使用以下正则表达式(没有 # 和 #is)在 Regex Buddy 上对其进行调试:

\[url=([\w]+?://.*?)\]([^?\n\r\t].*?)\[/url\]

(这两个正则表达式应该对我的应用程序有相同的效果,因为我可以轻松地调整它,所以如果它更有意义,请使用后者)

将匹配字符串中的两行。当and[spoiler]之间有字符串时,我希望它不返回匹配项。[url=xxxx://yyyy][/url]

我认为它可以通过负前瞻来完成,但我似乎无法找到一种方法将其插入当前的正则表达式而不使其无法使用。

任何帮助表示赞赏。

4

1 回答 1

1

这应该可以解决问题。

'#\[url=([^\]]+)\](?!\[spoiler\])(.*?)\[/url\]#'
于 2012-04-18T03:22:55.307 回答