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

use*_*535 6 regex

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

[url]some text[/url]
Run Code Online (Sandbox Code Playgroud)

要么

[url class="class"]some text[\url]
Run Code Online (Sandbox Code Playgroud)

这是我创建的模式

(\[url.*\])(.*?)(\[\\url\])
Run Code Online (Sandbox Code Playgroud)

如果只有一个标签,它可以正常工作,但如果我在一个句子中有两个标签,如下所示:

This is a sentence [url]blah[\url] this is another sentence[url]blah[\url]
Run Code Online (Sandbox Code Playgroud)

它只有一个匹配,并在第一个开始和最后一个结束[url]标记之间抓取所有内容.我做了一些研究,并补充说,?以阻止它贪婪和抓住一切,但它不起作用.我也试过用:

[^\[]* 
Run Code Online (Sandbox Code Playgroud)

代替

(.*?)
Run Code Online (Sandbox Code Playgroud)

再次它没有什么区别.

Jer*_*rry 1

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

(\[url[^\]]*\])([^\[]*)(\[\\url\])
Run Code Online (Sandbox Code Playgroud)

.*就是贪心,匹配一切。如果您从当前的正则表达式中检查该组,您实际上会看到第二组和第三组中的[url]blah[\url] this is another sentence[url]匹配项。blah[\url]