我正在尝试创建一个与方括号url标记匹配的正则表达式,如下所示: -
[url]some text[/url]
或
[url class="class"]some text[\url]
这是我创建的模式
(\[url.*\])(.*?)(\[\\url\])
如果只有一个标签,它可以正常工作,但如果我在一个句子中有两个标签,如下所示:
This is a sentence [url]blah[\url] this is another sentence[url]blah[\url]
它只有一个匹配项并在第一个开始和最后一个结束[url]
标记之间抓取所有内容。我做了一些研究,并添加了?
以阻止它贪婪并抓住一切,但它不起作用。我也尝试过使用:
[^\[]*
而不是
(.*?)
再次没有什么区别。
答案 0 :(得分:1)
这是正则表达式中的第一个导致它无法正常工作的.*
。试试这个:
(\[url[^\]]*\])([^\[]*)(\[\\url\])
.*
贪婪并且匹配一切。如果您从当前的正则表达式中选中此组,则实际上会看到[url]blah[\url] this is another sentence[url]
为匹配项,blah
位于第二组,[\url]
位于第三组中。
答案 1 :(得分:0)
.*
可能有点危险,如果您事先知道您将使用[a-zA-Z0-9]
文字/数字并避免此问题。
类似于:\[url\][a-zA-Z0-9]+\[\\url\]
答案 2 :(得分:0)
更具体地说,你可以给:
(\[url( .+[=].+\])*)[z-zA-Z0-9 ](\[\url\])
答案 3 :(得分:0)