我正在尝试创建一个与方括号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)
再次它没有什么区别.
这是正则表达式中的第一个.*导致它无法正常工作的原因。尝试这个:
(\[url[^\]]*\])([^\[]*)(\[\\url\])
Run Code Online (Sandbox Code Playgroud)
.*就是贪心,匹配一切。如果您从当前的正则表达式中检查该组,您实际上会看到第二组和第三组中的[url]blah[\url] this is another sentence[url]匹配项。blah[\url]