我尝试创建一个可以解析ini-File的正则表达式。
但我希望ini-values可以是多行的!
像那样:
Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland
我试试这个正则表达式,但它不起作用:
/.*=(.*)^.*=/gsm
你可以使用这个PCRE正则表达式:
/^.*=.*[^=]*$/gm
试试吧here。
这取决于缺少s
ingle-line标志,小心不要设置它。 m
ultiline标志也是必要的,如果合适,可以使用g
lobal。
这匹配从包含等号(^.*=.*
)的行的开头,然后将匹配尽可能多的不包含等号的整行([^=]*$
,其中[^=]
将匹配换行符)。
您似乎正在使用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
我猜你试图得到所有ini值,为此你可以使用这个正则表达式模式:
/^(.*)=(.*)/gm
并且您可以使用组访问您的值,每个组将检索您的键和值