'のいずれかに一致"し、次に他の文字に一致する正規表現を作成します。最初に遭遇した内容に応じて、 a'またはそれぞれが一致したときに終了します。"したがって、この問題は、最後に後方参照を使用することで解決できるほど単純に見えます。以下にいくつかの正規表現コードを示します(Javaであるため、\beforeなどの余分なエスケープ文字に注意して"ください)。
private static String seekerTwo = "(['\"])([a-zA-Z])([a-zA-Z0-9():;/`\\=\\.\\,\\- ]+)(\\1)";
このコードは、次のようなものを正常に処理します。
"hello my name is bob"
'i live in bethnal green'
次のような文字列があると問題が発生します。
"hello this seat 'may be taken' already"
上記の正規表現を使用すると、最初の部分で遭遇すると失敗し、'続行して正常に一致し'may be taken'ます...しかし、これは明らかに不十分です。文字列全体を一致させる必要があります。
私が考えているのは、最初のグループで一致しなかった引用符のタイプを、3番目のグループの文字セットに文字として含めることによって無視する方法が必要だということです。しかし、私はこれを行う方法を知りません。ある種の卑劣なNOT後方参照関数か何かがありますか?一致しなかった最初のグループのキャラクターを参照するために使用できるものはありますか?それとも、私の苦境に対するある種の解決策ですか?