正则表达式不返回2组

时间:2009-03-25 12:45:25

标签: regex

我的正则表达式有点麻烦,并且想知道是否有人可以请说明该怎么做。

基本上,我有这个正则表达式:

\[(link='\d+') (type='\w+')](.*|)\[/link]

例如,当我传递字符串时:

[link='8' type='gig']Blur[/link] are playing [link='19' type='venue']Hyde Park[/link]" 

它只返回从开头[link]标记到最后[/link]标记的单个匹配项。

我只是想知道是否有人可以帮助我在(.*|)部分放置什么,一次只选择一个[link][/link]部分。

谢谢!

3 个答案:

答案 0 :(得分:3)

您需要使用“?”进行通配符选择。运营商。我做到了:

/\[(link='\d+')\s+(type='\w+')\](.*?)\[\/link\]/

当然这对于任何类型的嵌套都会失败,在这种情况下,语言不再是常规的并且正则表达式不适合 - 找到解析器

答案 1 :(得分:0)

正则表达式信息a是一个很棒的网站。 This page给出了处理html标签的示例。还有一个Eclipse plugin,可以让你开发表达式并实时查看匹配。

答案 2 :(得分:0)

你需要在正则表达式中间使。*非贪婪。在正则表达式的风格中查找非贪婪模式的语法和/或标志。