我尝试创建一个可以解析ini-File的正则表达式。
但我希望ini-values可以是多行的!
就像那样:
Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland
我尝试使用这个正则表达式,但它不起作用:
/.*=(.*)^.*=/gsm
答案 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
您可以使用群组访问您的值,每个群组都会检索您的键和值