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

问题描述 投票:1回答:3

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

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

像那样:

Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland

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

/.*=(.*)^.*=/gsm
regex ini
3个回答
1
投票

你可以使用这个PCRE正则表达式:

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

试试吧here

这取决于缺少single-line标志,小心不要设置它。 multiline标志也是必要的,如果合适,可以使用global。

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


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

0
投票

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

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

并且您可以使用组访问您的值,每个组将检索您的键和值

© www.soinside.com 2019 - 2024. All rights reserved.