がハングアップする原因となります。私はそれを(.*[\r\n]+)
に変更すると動作します。正規表現は、私は評価しないと無限にハングアップしない正規表現を、以下のいる無限
正規表現hereで試すことができます。どのように誰がそれが可能であることを説明することができますか?
がハングアップする原因となります。私はそれを(.*[\r\n]+)
に変更すると動作します。正規表現は、私は評価しないと無限にハングアップしない正規表現を、以下のいる無限
正規表現hereで試すことができます。どのように誰がそれが可能であることを説明することができますか?
あなたがここにいるのは、壊滅的なバックトラッキングの場合です。 your regex demoを参照してください。原因は他のサブパターンで囲まれた(.*[\r\n]*)*
部分です。ネストされた量指定子は、あまりにも多くのバックトラッキングを引き起こし、正規表現デバッガページ(regex101.com)に表示されます。
ソリューションは怠惰なドットマッチングを使用するかのいずれかである:.*?
と[\r\n]+((.*[\r\n]*)*)
を交換し、パターンの開始時に(?s)
修飾子を追加したり、長い入力のためのはるかに優れて展開されたバージョンを(使用しますが、いくつかのハードコーディングが必要です)。
実際には(?s)#-=-=-= AUTOGENERATED HEADER =-=-=-.*?#-=-=-= AUTOGENERATED FOOTER =-=-=-
を参照してください。使用する
Matcher matcher = messages =~ /(?s)${AUTOGENERATED_HEADER}.*?${AUTOGENERATED_FOOTER}/
ドットが改行文字と一致する(?s)オプションを指摘してくれてありがとう。 $ {AUTOGENERATED_HEADER} $ {AUTOGENERATED_FOOTER} ' –
'(。*) 'にはグリーディ量限定子が含まれていることに注意してください上記で提供した正規表現は最初の '$ {AUTOGENERATED_HEADER}'から* last * '$ {AUTOGENERATED_FOOTER}'まで一致します。 –
非常に診断しやすい:壊滅的なバックトラック。 [demo](https://regex101.com/r/tK7tX5/1)を参照してください –