マッチするかっこを含む可能性のある文字列の中で、不一致の中かっこ(開始または終了)を見つける正規表現が必要です。マッチしない括弧を見つけるための正規表現
ここには、stackoverflowに関する質問がありますが、動作する正規表現ベースのソリューションが見つかりませんでした。
私は、否定的な先読みを使用して、一致しない開いた中括弧\((?![^)]+\))
を見つけましたが、一致しない閉じ括弧に必要な反対のものを見つけることはできません。
EDIT:意図したとおりに比類のないオープンな括弧を見つけるために上記の正規表現は動作しません。例えば。それはここでは、複数のオープン中括弧は、単一の閉じ括弧が続いている例(コメントも参照)
を欠場する私はRubular上で実験してきたというのが私のテスト文字列です:
one) ((two) (three) four) (five)))
に留意されたいです。文字列には、引用符、ダッシュなどの任意のタイプの文字を含めることができます。
これは、一般的なケースで動作する正規表現ベースのソリューションがないためです。これは、あなたが[regexでXMLを解析できない](http://stackoverflow.com/a/1732454/13)(これは一般的な場合)と同じ理由です。 –
本当に正規表現でなければなりませんか?なぜ単純なループではない 'string.each_char {| c | ...} '? –
厳密なregexp言語はできません..しかし、PCREのような一般的な拡張正規表現は可能です。 http://stackoverflow.com/questions/562606/regex-for-checking-if-a-string-has-mismatched-parentheses – Kaganar