English 中文(简体)
正则表达式没有返回两个组
原标题:
  • 时间:2009-03-25 12:45:24
  •  标签:

我在使用正则表达式方面遇到了一些困难,想知道是否有人可以指点一下该怎么做。

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

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

例如,当我传递字符串:

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

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

我想知道是否有人能帮我解决在我的(.*|)部分中应该放什么来一次只选择一个[link][/link]部分。

谢谢!

最佳回答

你需要使用“?”操作符将通配符选择设置为非贪婪的。 我这样做:

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

当涉及到嵌套时,所有这些规则都失效了,此时该语言就不再是正则的了,而正则表达式也就不适用了——需要寻找解析器。

问题回答

正则表达式信息网是一个非常棒的网站。这个页面提供了一个处理HTML标签的示例。还有一个Eclipse插件,可以实时开发表达式并查看匹配结果。

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





相关问题
热门标签