Regex(Java):解析某个关键字后面的字符串列表

时间:2012-02-15 16:05:37

标签: java regex

我有一个包含关键字列表的配置文件。每个关键字后面都是一个包含一个或多个值的块,每个值都用引号括起来。例如:

SrcDir { "D:\Temp\Input\" }
WorkDir { "D:\Temp\Work\" }
Folders {
  "Standard Color Workflow"
  "Normal"
  "Fast"
}

我正在尝试编写一个正则表达式,它将作为捕获组返回关键字,然后返回其对应值的列表。

我开始使用([\w]+)\s\{([^}\n]+)}\n,但它显然不适用于上面示例的“文件夹”部分,即使它们都在同一行上,这个正则表达式也不会返回多个值。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你基本上就在那里。您只需要删除\n引用。如:

([\w]+)\s\{([^}]+)}

现在,这意味着在第三种情况下,所有这些字段都会将其\ n嵌入捕获的组中。

虽然现在,我看到你有一个评论“这个正则表达式也不能返回多个值,即使它们都在同一行上”。所以,也许我不理解你的问题。

---编辑:

要将其中的每一个都放入自己的捕获组中,请单独指定引号。试试这个:

([\w]+)\s\{(\s*"([^}"]+)"\s*)+}  -- doesn't work

---编辑2:

我将他们分别带入他们小组的例子不起作用。它不会。 StackOverflow: 5018487

我建议使用我的原始正则表达式,使用{s中找到的完整字符串集,然后对匹配的文本进行第二次正则表达式搜索,以提取每个“文本”。

谢谢,我今天学到了一些东西!