2011-07-22 99 views
0

有没有这样的事情?我一直在环视Vala API,Regex对象似乎不支持捕获组,以便以后可以参考。目前有什么办法可以解决这个明显的限制吗?说我解析字符串了一组字符串(一个文件的内容),像给定模式的:正则表达式在Vala捕获组

 
parameter = value 

但我想语法松懈,这样也可以说

 parameter=value
parameter = value
等等...首先想到的想法是使用正则表达式来捕获组,但是就我看来,现在似乎不支持这个功能作为Vala的一部分。

我能想出的唯一选择是用匹配空格的正则表达式分割字符串,以便最终生成一个我可以分析的数组,但是然后该文件可能不仅包含“parameter = value” - 如格式化线。

+1

你试过什么样的正则表达式/替换字符串?显然,[Vala使用GLib正则表达式libaray](http://www.valadoc.org/references/glib-2.0/0.11.5/GLib.Regex.html),它不仅支持反向引用,而且支持许多更高级的东西。 – Tomalak

回答

4

它是这样的。免责声明,这是我的头顶:

Regex r = /^\s*(?P<parameter>.*)\s*=\s*(?P<value>.*)\s*$/; 
MatchInfo info; 
if(r.match(the_string, 0, out info)) { 
    var parameter = info.fetch_named("parameter"); 
    var value = info.fetch_named("value"); 
}