正则表达式组多行

时间:2016-08-30 19:23:18

标签: javascript regex

我正在尝试使用正则表达式从WordPress文件中提取DB_NAME,DB_USER,DB_HOST,DB_PASSWORD。有没有办法将每个变量分组到自己的组中?

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'stack');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

结果应该像这样分组:wordpress,root,stack,localhost 应该有4场比赛。

1 个答案:

答案 0 :(得分:2)

以下正则表达式是您正在寻找的。

define\('DB_(?:NAME|USER|PASSWORD|HOST)', ?'(.*)'\);

它以这种方式匹配整个语句(因为JavaScript不支持lookbehinds):

  • define\(是开头(注意括号前的反斜杠)
  • 'DB_(?:NAME|USER|PASSWORD|HOST)'是变量名称
  • , ?是变量名称和实际值之间的分隔符
  • '(.*)'是实际值(如果值不允许为空,请使用'(.+)'
  • \);是结尾(再次注意括号前的反斜杠)

请注意,实际值位于捕获组(kudos to Casimir et Hippolyte for suggesting this)中。这不仅比外观更容易设置,而且与JS what I came up previously不同,它适用于JS。