使用正则表达式从键值对中提取最后一个值

时间:2012-08-11 08:03:21

标签: regex pcre

以下是示例文本 -

display_errors = On
display_errors= Off
display_errors = On

我想提取最后display_errors的值。我该怎么做?

到目前为止,我display_errors =(?!.*display_errors = )能够匹配display_errors =,但我想要它的价值,而不是关键。

我使用libpcre进行匹配。匹配所有选项

请注意我要使用正则表达式,而不是任何.ini解析库。

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

display_errors\s*=\s*([a-zA-Z]+)(?!.*display_errors\s*=)

这应匹配display_errors键的最后一个值,假设值为字符a-z(但如果需要,可以轻松更新接受字符列表)。

答案 1 :(得分:0)

按换行符拆分文本,使用正则表达式遍历每一行:

display_errors ?= ?(On|Off)

使用不区分大小写的方法编译,以捕获轻微的错误。捕获第一组的值以从该匹配中获取状态。在循环的每次迭代中,只需用当前状态覆盖变量,在循环结束后,变量将包含最后一个display_errors的值。