$re = '/(?:(?:^|\G(?<!^)[^\'"]*")[^"]*+(?:"[^"\']*"[^"]*)*+"|\G(?<!^))[^\'"]*+(\')/';
$str = '" This is a random sentence \' with \'a quote, the quote should match"
" There is no quote here thats the problem" Anything here should not match but now it does: \' .
" Some text " some more text " this is a quote : \' that should match"
" When there is a quote (\') here, the other one does not work : " \' and that\'s perfect " even if you remove the first one this : " (\') " will make it work because of the greedy ( I think ) but ifyou remove those between parenthesis, the other one is matching as of now, which I do not want to happen."
Another example would be this one : The following should not work, but it does "This is being quoted" not this: (\') " and this is also being quoted "
"\'"
';
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