重複の可能性:
外側の括弧に一致する正規表現
返される正規表現はありますか:
[aaaa[aaa]aaaa]
から
aaa"fields":[aaaa[aaa]aaaa]aaa
これは、XPath も含む JSON 文字列から配列を取得するコンテキストにあります。XPath には、配列と同じように左角かっこと右角かっこがあるため、部分文字列としても含まれる左中かっこと右中かっこで区切られた文字列を取得するという一般的な問題が発生します...それが理にかなっていることを願っています。
開かれた角括弧のペアの数を追跡する必要があると思います.0に達した場合にのみ、文字列のその部分を返します. これにはループが必要ですが、純粋な正規表現の解決策があるかどうか疑問に思っていました。
私の最初の試みは:
cleaned_defintion = defintion.gsub(/\[\d*\]/,"")
これは、次のような XPath を変換します:html[1]/body[1]/form[1]/div[7]/div[2]/input[1]
に変換しますhtml/body/form/div/div/input
が、これは次のような要素を持つ xpath を残します:
td[@width='113']
次に壊れます:
json_fields = cleaned_defintion.match(/fields":(\[[^\]]*\])/)
この質問には、反復アプローチを使用する回答があります: ネストされた開始タグと終了タグを見つける最良の方法