Regex 匹配方括号url标记的正则表达式

Regex 匹配方括号url标记的正则表达式,regex,Regex,我正在尝试创建一个正则表达式,它将匹配方括号url标记,如下所示:- [url]some text[/url] 或 这就是我创建的模式 (\[url.*\])(.*?)(\[\\url\]) 如果一个句子中只有一个标记,它就可以正常工作,但是如果我在一个句子中有两个标记,如下所示: This is a sentence [url]blah[\url] this is another sentence[url]blah[\url] 它只有一个匹配项,可以抓取第一次打开和最后一次关闭之间的所有

我正在尝试创建一个正则表达式,它将匹配方括号url标记,如下所示:-

[url]some text[/url]

这就是我创建的模式

(\[url.*\])(.*?)(\[\\url\])
如果一个句子中只有一个标记,它就可以正常工作,但是如果我在一个句子中有两个标记,如下所示:

This is a sentence [url]blah[\url] this is another sentence[url]blah[\url]
它只有一个匹配项,可以抓取第一次打开和最后一次关闭之间的所有内容
[url]
标记。我做了一些研究,并添加了
,以阻止它贪婪地攫取一切,但它不起作用。我还尝试使用:

[^\[]* 
而不是

(.*?)

同样,它也没什么区别。

这是正则表达式中第一个导致它无法正常工作的
*
。试试这个:

(\[url[^\]]*\])([^\[]*)(\[\\url\])


*
是贪婪的,匹配所有东西。如果您从当前正则表达式中检查此组,您实际上会看到另一个句子[url]作为匹配,
blah
在第二组中,而
[\url]
在第三组中。

*
如果您事先知道要使用文本/数字,则可能有点危险[a-zA-Z0-9]并避免该问题


类似于:
\[url\][a-zA-Z0-9]+\[\\url\]

更具体地说,您可以给出:

(\[url( .+[=].+\])*)[z-zA-Z0-9 ](\[\url\]) 

仅适用于
url
标记:

(?:\[url])([^\[]+)\[[\/\\]url]

要删除所有标记,请执行以下操作:

(?:\[(\w+)[^]]*]).*?\[[\/\\]\1]

非常感谢。我不经常使用正则表达式,也没有注意到第一个*
(?:\[(\w+)[^]]*]).*?\[[\/\\]\1]