多行 .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
单行标志,注意不要设置它。 m
ultiline 标志也是必需的,g
lobal 可以在适当的情况下使用。
这从包含等号 (^.*=.*
) 的行开始匹配,然后将匹配尽可能多的不包含等号的整行 ([^=]*$
,其中[^=]
将匹配换行符)。
我猜您正在尝试获取所有 ini 值,为此您可以使用此正则表达式模式:
/^(.*)=(.*)/gm
并且您可以使用组访问您的值,每个组都会检索到您的键和值
我尝试创建一个可以解析 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
单行标志,注意不要设置它。 m
ultiline 标志也是必需的,g
lobal 可以在适当的情况下使用。
这从包含等号 (^.*=.*
) 的行开始匹配,然后将匹配尽可能多的不包含等号的整行 ([^=]*$
,其中[^=]
将匹配换行符)。
我猜您正在尝试获取所有 ini 值,为此您可以使用此正则表达式模式:
/^(.*)=(.*)/gm
并且您可以使用组访问您的值,每个组都会检索到您的键和值