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

Regex for multiline .ini file

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

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

像那样:

Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland

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

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

您似乎在使用 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

您可能正在使用这个 PCRE 正则表达式:

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

试试看 here.

这依赖于没有s单行标志,注意不要设置它。 multiline 标志也是必需的,global 可以在适当的情况下使用。

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

我猜您正在尝试获取所有 ini 值,为此您可以使用此正则表达式模式:

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

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