用于多行.ini文件的正则表达式

时间:2017-07-12 15:08:58

标签: regex ini

我尝试创建一个可以解析ini-File的正则表达式。

但我希望ini-values可以是多行的!

就像那样:

Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland

我尝试使用这个正则表达式,但它不起作用:

/.*=(.*)^.*=/gsm

3 个答案:

答案 0 :(得分:1)

您可以使用此PCRE正则表达式:

/^.*=.*[^=]*$/gm

试试here

这取决于缺少s单行标志,请注意不要设置它。 m ultiline标志也是必需的,如果合适,可以使用g lobal。

这匹配包含等号(^.*=.*)的行的开头,然后匹配尽可能多的不包含等号的整行([^=]*$,其中{{ 1}}将匹配换行符。

答案 1 :(得分:0)

您似乎正在使用Perl。您考虑过使用Config::IniFiles吗?该模块将为您处理解析INI类型的文件,并使用heredoc语法支持多行参数:

Parameter=<<EOT
value/line 1
value/line 2
EOT

或者,如果您使用Config::IniFiles->new(..., -allowcontinue => 1);启用它,续行:

[Section]
Parameter=this parameter \
  spreads across \
  a few lines

答案 2 :(得分:0)

我猜你想要获得所有ini值,为此你可以使用这个正则表达式模式:

/^(.*)=(.*)/gm

您可以使用群组访问您的值,每个群组都会检索您的键和值