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

Regex 多行.ini文件的正则表达式,regex,ini,Regex,Ini,我尝试创建一个可以解析ini文件的正则表达式 但我希望ini值可以是多行的 就像这样: Wert1=Hallo dsadasd Wert2=Hi Wert3=Heinirch Volland 我尝试使用这个正则表达式,但它不起作用: /.*=(.*)^.*=/gsm 您似乎正在使用Perl。你考虑过使用吗?该模块将为您处理INI类型文件的解析,并支持使用heredoc语法的多行参数: Parameter=<<EOT value/line 1 value/line 2 EOT 您

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

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

就像这样:

Wert1=Hallo
dsadasd
Wert2=Hi
Wert3=Heinirch Volland
我尝试使用这个正则表达式,但它不起作用:

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

您似乎正在使用Perl。你考虑过使用吗?该模块将为您处理INI类型文件的解析,并支持使用heredoc语法的多行参数:

Parameter=<<EOT
value/line 1
value/line 2
EOT

您可以使用以下PCRE正则表达式:

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

这取决于缺少
s
single line标志,请小心不要设置它。
m
ultiline标志也是必要的,如果合适,可以使用
g
lobal


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

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

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

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

什么意思,它“不起作用”?根本不匹配?你用的是什么语言?试试看。如果键只能由单词字符组成,请使用。尽管编程语言有现成的INI解析库,但最好使用一个。如果没有
s
single-line标志,这将无法匹配多行值,并且将与它匹配得太过贪婪
/^(.*)=(.*)/gm