単一の文字列の間にあるコンテンツを取得したいのですが、コンテンツが空の場合、正規表現は失敗します...
<?PHP
$string = "
blaat = 'Some string with an escaped \' quote'; // some comment.
empty1 = ''; // omg! an empty string!
empty2 = ''; // omg! an empty string!
";
preg_match_all( '/(?<not>\'.*?[^\\\]\')/ims', $string, $match );
echo '<pre>';
print_r( $match['not'] );
echo '</pre>';
?>
これにより、次の出力が得られます。
Array
(
[0] => 'Some string with an escaped \' quote'
[1] => ''; // omg! an empty string!
empty2 = '
)
この問題は次の正規表現で修正できることを知っていますが、すべての例外の修正ではなく、真の解決策を探していると思いました...
preg_match_all( '/((\'\')|(?<not>\'(.*?[^\\\])?\'))/ims', $string, $match );