引用符内にあるすべての疑問符をカウントする正規表現を作成しようとしています。この正規表現は JavaScript でテストされていますが、問題があれば PHP で使用するつもりです。私はそのような作品を持っていますが、十分ではありません。
ここにあります。
/(\"|\')(([^\"\'\\]|\\.)*)\?(([^\"\'\\]|\\.)*(\"|\'))/g
ご覧のとおり、エスケープされた引用符も無視したいと思います。
string があるとします"hello? \"world?\""
。これは正しい 1 を返します。
でもこれは"hello? \"world??\""
。これも1を返しますが、私が欲しいのは2です。どうすればこれを達成できますか?
また、これと正反対の正規表現を取得できれば、さらに愛されます(引用符で囲まれていない疑問符を数えます)。
役立つ場合、このテストに使用される関数全体を次に示します。
function countTest(str) {
regx = /(\"|\')(([^\"\'\\]|\\.)*)\?(([^\"\'\\]|\\.)*(\"|\'))/g;
test = str.match(regx);
test = test ? test.length : 0;
console.log(test);
}
編集:
また!この質問の自分のタイプミスから、文字列hello \"world?\'"
も 1 を返すことに気付きました。これは簡単に修正できるようです。