2017-10-11 4 views
0

大括弧と角括弧の間のすべてのテキストに一致するregexpを作成しようとしています。しかし、1つの条件では、最初の括弧を忘れることがあります。たとえば :最初の括弧がRegexで見つからない場合は、角括弧の間にあるすべてのテキストを取得します

今日は私が[晴れた日]を取得したい最初のケースで[晴れた日]

今日は晴れた日]

です。秒で私はを取得したい今日は晴れた日です

私はregexpを書きましたが、最初の場合のみ動作します。

(?(?=\[).*?|)\]

私はこの

(?(?=\[).*?|.*?)\]

のような他のアクションを設定しようとしましたが、この場合には、私は今日を得た[晴れた日]だけではなく[晴れた日]です。

私の問題を解決する正規表現はありますか?ネストされたブラケットはあなたが単に

\[?[^\]\[]*\] 

または少しこれは、必要に応じて、そのすべてのコンテンツを開く角括弧にマッチします

\[?[^][]*] 

をエスケープしてを使用することができます考えるべきではないと仮定すると

+1

'(\ [* \。?] |^[^ \ [\]] * \])'多分作品ですか? – apokryfos

+3

'\ [?[^ \] \ [] * \]'で十分です。 –

+0

両方の仕事に感謝! –

答えて

1

角カッコと閉じ角カッコが含まれていません。

を参照してくださいhttps://regex101.com/r/97F2wM/1

(重複行を避けるために否定文字クラスに\nを追加しました)

関連する問題