$re = '/I\'m logged in as (?:a\s|an\s)(?:"([^"]*)"\s)?(?:user|customer)\s(?:(?:for[\sa\s|\san\s]?)(?:"([^"]*)"\s))?/';
$str = 'Given I\'m logged in as a user for a "password change" to eCommerce
Given I\'m logged in as an "inactive" user for a "password change" to eCommerce
Given I\'m logged in as an "inactive" user to eCommerce
Given I\'m logged in as a "simple" user to eCommerce
Given I\'m logged in as a user in a "shared" account to eCommerce
Given I\'m logged in as a user in a "bucket" account to eCommerce
Given I\'m logged in as a user for "email notification tests" to eCommerce
Given I\'m logged in as a user with "cs admin and sales admin" roles to eCommerce
Given I\'m logged in as a user with "cs & bb" roles for a "passwd change" to eCommerce
Given I\'m logged in as an "inactive" user with "cs admin" roles to eCommerce
Given I\'m logged in as "ducking" user with "ducking" roles to eCommerce
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php