正则表达式不像预期的那样工作

时间:2016-01-14 10:25:12

标签: regex

我需要正则表达式的帮助

'#\[quote=(.+);(.+)](.+)\[/quote]#Usi'

这样可行,但只有在你正确使用它时它才有效,IE

[quote=SvenMarklund;53124]kåle på kaffe de varte snörauka å kölblåst borta kamjox så ma lej bivack hela natta[/quote]

它不匹配,这很好:

[quote=OlleMarklund]jag vill inte ha en pörskans zingo![/quote]

但是如果你在同一篇文章中这样做,那就“打破”(见图片)

[quote=OlleMarklund]jag vill inte ha en pörskans zingo![/quote]
[quote=OlleMarklund;23523]jag vill inte ha en pörskans zingo![/quote]

我怎样才能匹配[quote = something;(numbers)]

enter image description here

1 个答案:

答案 0 :(得分:1)

这是固定的正则表达式:

'~\[quote=([^[\]]+);([^[\]]+)]([^[\]]+)\[\/quote]~si'

请参阅regex demo

您需要在开场OlleMarklund内捕获23523[quote]。要实现这一点,您需要限制贪婪的.+子模式,最好的方法是使用否定字符类 [^[\]](匹配除{{{}之外的任何字符1}}和[)。

如果您需要在]内匹配更多标签,则需要使用类似

的内容
[quote]

仅匹配第一个'~\[quote=([^[\]]+);([^[\]]+)]((?:(?!\[\/quote]).)+)\[\/quote]~si' demo)。对于嵌套的标签,您最好使用BBCode解析器。