我有一个包含关键字列表的配置文件。每个关键字后面都是一个包含一个或多个值的块,每个值都用引号括起来。例如:
SrcDir { "D:\Temp\Input\" }
WorkDir { "D:\Temp\Work\" }
Folders {
"Standard Color Workflow"
"Normal"
"Fast"
}
我正在尝试编写一个正则表达式,它将作为捕获组返回关键字,然后返回其对应值的列表。
我开始使用([\w]+)\s\{([^}\n]+)}\n
,但它显然不适用于上面示例的“文件夹”部分,即使它们都在同一行上,这个正则表达式也不会返回多个值。
对此的任何帮助将不胜感激。
答案 0 :(得分:0)
你基本上就在那里。您只需要删除\n
引用。如:
([\w]+)\s\{([^}]+)}
现在,这意味着在第三种情况下,所有这些字段都会将其\ n嵌入捕获的组中。
虽然现在,我看到你有一个评论“这个正则表达式也不能返回多个值,即使它们都在同一行上”。所以,也许我不理解你的问题。
---编辑:
要将其中的每一个都放入自己的捕获组中,请单独指定引号。试试这个:
([\w]+)\s\{(\s*"([^}"]+)"\s*)+} -- doesn't work
---编辑2:
我将他们分别带入他们小组的例子不起作用。它不会。 StackOverflow: 5018487
我建议使用我的原始正则表达式,使用{s中找到的完整字符串集,然后对匹配的文本进行第二次正则表达式搜索,以提取每个“文本”。
谢谢,我今天学到了一些东西!