我正在尝试使用正则表达式从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场比赛。
答案 0 :(得分:2)
以下正则表达式是您正在寻找的。 p>
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。