寻找使用多行正则表达式匹配器读取以下配置文件示例的方法。我可以直接在文件中阅读,但我希望通过灵活的正则表达式匹配的细节得到体面。
因此配置文件中填充了以下代码块:
blockName BLOCK
IDENTIFIER value
IDENTIFIER value
IDENTIFIER
"string literal value that
could span multiple lines"
标识符的数量可以是1..infinity。 IDENTIFIER可以是NAME,DESCRIPTION,TYPE等。
之前我从未使用过多行正则表达式。我对这个过程不太熟悉。我本质上想使用一个使用此正则表达式的findAll函数将所有已解析的块数据放入数据结构中进行处理。
编辑:澄清:我只想读一次这个文件。我不关心效率或优雅。我想将信息读入数据结构,然后以不同的格式吐出。这是一个大文件(3000行),我不想手工完成。
答案 0 :(得分:1)
我不认为正则表达式是最好的工具。
答案 1 :(得分:0)
试试这个,它应该在perl正则表达式中起作用:
([\w\d]*)\s+BLOCK\s*\n(\s*(NAME|DESCRIPTION|TYPE|...)\s*([\w\d]*|"(.*)")\s*\n)+
我使用以下测试文字在REGex TESTER验证了它:
blockName BLOCK
NAME value
NAME value
DESCRIPTION
"string literal value that
could span multiple lines"
otherName BLOCK
NAME value
TYPE value
DESCRIPTION
"string literal value that
could span multiple lines"
如果文件以换行符结尾
,它只会找到最后一个块/标识符