2016-10-03 15 views
1

をバックトラック。 Ofcourse私はすでにGoogleにそれを試みて、これが私の問題かどうか分からないが、 "Catastrophic backtracking"について何かを見つけた。 {まで、単一の(またはペア)終了:ce_img卵} 壊滅的には私は私の正規表現でいくつかの問題を抱えている

私は変更または削除しよう

|それだけで正常に動作します(シングルペア)

正規表現は私の間のすべてを与える必要があります。それはその権利に関する何かであるべきですか?

$ファイルは問題ではないと私は確信しています。

誰かがこれを解決する方法を知っていますか?これは動作するはず image

+0

解析する文字列の例を教えてください。 –

+0

https://regex101.com/r/PK7dBk/1 –

+0

編集内容を確認してください。ありがとう! –

答えて

0

入力ファイルは、これらの少なくとも一つ含まれているので、あなたの正規表現は、(原因壊滅的なバックトラックに)あなたのサイトをクラッシュ:

  1. をターゲットブロックの後の複数の空白文字
  2. ターゲットブロックの後にスペースを含む一連の文字。 \s.+と同様です。

ソリューション:これは、特にあなたのパターンに一致する

{[a-z]+:ce_img:(?:single|pair)(?:\s+[\w-]+="[^"]*")*\s*} 

。最後の異なる部分の説明:

(?:     # Start of non-capturing group (a) 
    \s+[\w-]+="[^"]*" # Match similar following string `attr="value"` 
)*      # Many or zero times - end of non-capturing block (a) 
\s*     # Match all space characters if any, before closing brace `}` 
+2

ありがとう!これは実際にトリックでした。 –

0

{[a-z]+:ce_img:(?:single|pair)?([\w\W\s]+)*} 

あなたのイメージに提示テキストの場合

よろしく、Olcan

編集:ここでは この正規表現は動作するはずです方法の例:

{eggs:ce_img:single 
    src="{src}" 
    fallback_src="/assets/a-b-c.jpg" 
    width="250" 
    height="250" 
    add_dims="no" 
    crop="yes" 
    title="{title}" 
    alt="{title}" 
    allow_scale_larger="yes" 
} 

あなたが得られます。

Group 1  src="{src}" 
      fallback_src="/assets/a-b-c.jpg" 
      width="250" 
      height="250" 
      add_dims="no" 
      crop="yes" 
      title="{title}" 
      alt="{title}" 
      allow_scale_larger="yes" 

こちらをご覧デモ:https://regex101.com/r/uo9Kqi/1

+0

この正規表現があなたの質問に答えてもよろしいですか? @OlcanTeke – revo

+0

実際には、いくつかのテストの後では、{}内のwhatsを返すのではなく、最初の{入力文字列の最後までのすべてを返します。 –

関連する問題