0

我有一个我制作的应用程序的配置文件,要加载我需要首先从配置文件中解析它们的配置。我有点卡住了。

这是配置文件的片段:

#0_downloaded_url:[http://example.com/to/be/downloaded/, http://example.com/to/be/downloaded/]
#0_follow_url:http://example.com/to/be/downloaded/
#0_download_url:http://example.com/to/be/downloaded/
#0_main_url:http://example.com/to/be/downloaded/
#1_downloaded_url:[http://example.com/to/be/downloaded/, http://example.com/to/be/downloaded/]
#1_follow_url:http://example.com/to/be/downloaded/
#1_download_url: http://example.com/to/be/downloaded/
#1_main_url:http://example.com/

我想匹配所有匹配的内容:#(digit)_(text and underscores):(anything)(linebreak),所以基本上一次一行。我还想对结果进行分组,所以我得到第一个数字,然后是数字之后的文本,最后是分号之后的文本(在本例中为 url)。

到目前为止,这是我想出的:

^#\d_\w*:.*

但这不是我想要的。它只匹配一行,并且不对结果进行分组。

4

1 回答 1

2

要将结果分组,您需要使用括号:

^#(\d)_(\w+):(.+)

(注意,我用过+*也很好,区别是+至少需要一个字符,但*不会匹配)。

至于匹配每一行,这也符合预期。根据您使用的语言,通常有一些方法可以在整个输入字符串中重复搜索并返回所有匹配项。

根据您使用的正则表达式引擎,您也可以为组分配名称。如果是这样,你可以这样做

^#(?<id>\d)_(?<field>\w+):(?<value>.+)
于 2011-09-14T18:57:34.730 回答