const regex = /(?<=^|;|<\?php\s|<\?\s)(\s*?)(\h*define\s*\(\s*[\'"](\w*?)[\'"]\s*)(,\s*([\'"].*?[\'"]|.*?)\s*)((?:,\s*(?:true|false)\s*)?\)\s*;)/imsg;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<=^|;|<\\?php\\s|<\\?\\s)(\\s*?)(\\h*define\\s*\\(\\s*[\\\'"](\\w*?)[\\\'"]\\s*)(,\\s*([\\\'"].*?[\\\'"]|.*?)\\s*)((?:,\\s*(?:true|false)\\s*)?\\)\\s*;)', 'imsg')
const str = `<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the
* installation. You don't have to use the web site, you can
* copy this file to "wp-config.php" and fill in the values.
*
* This file contains the following configurations:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');
/** MySQL database username */
define('DB_USER', 'username_here');
/** MySQL database password */
define('DB_PASSWORD', 'password_here');
/** 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', '');
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
/**#@-*/
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
\$table_prefix = 'wp_';
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the Codex.
*
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', false);
//define( 'TEST_UPDATE_NO_MATCH', 'updateme' );
// define( 'TEST_UPDATE_NO_MATCH', 'updateme' );
define( 'TEST_MULTIPLE_LINE_1', 'update);me' );define( 'TEST_MULTIPLE_LINE_2', 'updateme' ); define( 'TEST_MULTIPLE_LINE_3', 'updateme' );
define( 'TEST_UPDATE_1', 'updateme' );
define( 'TEST_UPDATE_2' , 'updateme' );
define(
'TEST_UPDATE_3',
'updateme'
);
define(
'TEST_UPDATE_4'
,
'updateme'
)
;
define (
'TEST_UPDATE_5'
,
'updateme'
)
;
define( "TEST_UPDATE_6",'updateme' );
define ( "TEST_UPDATE_7",'updateme' );
define('TEST_UPDATE_8','updateme');
DEFINE( 'TEST_UPDATE_9', 'updateme' );
DEFINE ('TEST_UPDATE_10' ,'updateme' );
define( 'TEST_UPDATE_11', 'updateme', false );
define( 'TEST_UPDATE_12' , 'updateme' , false );
define(
'TEST_UPDATE_13',
'updateme',
false
);
define(
'TEST_UPDATE_14'
,
'updateme',
false
)
;
define (
'TEST_UPDATE_15'
,
'updateme'
,
false
)
;
define( "TEST_UPDATE_16",'updateme' ,false );
define ( "TEST_UPDATE_17",'updateme',false );
define('TEST_UPDATE_18','updateme',false);
DEFINE('TEST_UPDATE_19', 'updateme', false);
DEFINE ('TEST_UPDATE_20' ,'updateme' ,false );
/* That's all, stop editing! Happy blogging. */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions