Perl - 从文件中解析特定数据

时间:2015-01-31 20:36:11

标签: regex wordpress perl parsing

我试图从PHP文件中的这段代码中解析DB_HOST,DB_NAME,DB_USER和DB_PASSWORD的值:

define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');

我目前的方法(据我所知,无论如何)是将文件存储在变量中,并使用正则表达式一次解析每个定义的值。我可以做到这一切都很好,花花公子。但是,我只知道基本的正则表达式语法,并且不知道如何构造一个适用于此的语法。

我提前感谢你的帮助〜

1 个答案:

答案 0 :(得分:3)

这可以帮助您找到解决方案。它只是从每一行中提取 word 字符(字母数字和下划线)的所有序列,并使用第二和第三个字段作为变量名称和值。

如果值比简单的带引号的字符串更复杂,或者值可以包含除字符之外的其他内容,例如空格,那么这不会起作用。

use strict;
use warnings;

while (<DATA>) {
  my @fields = /\w+/g;
  my ($var, $val) = @fields[1,2];
  printf "%-12s = %s\n", $var, $val;
}

__DATA__
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');

<强>输出

DB_NAME      = foobar_db
DB_USER      = foobar_user
DB_PASSWORD  = foobar_password
DB_HOST      = localhost