私はバックトラッキング正規表現エンジンを使用するPerlで作業しています。余分なバックトラックをせずに/ s * a s * b /のようなregexpsをどのように一致させることができますか?
空白で区切られたトークンの文字列を一致させる必要があります(誰かが疑問に思っている場合に備えて、私はアセンブラを解析しています)。私は現在、
s/(\.text\n\s*\.align .(?:,0x90)?\n)\.globl\s+.*_?__stg_split_marker.*\n/$1/m
のような正規表現を使用していますが、余分なバックトラックが心配です。
どうすればこの問題を防ぐことができますか?
あなたは(テストをすることが有用である)あなたの例の文字列を表示する必要があります。私の意見では、主な問題は非常に容認しやすい '。* 'から来ています。その他のもの:m修飾子を使用する理由前にアセンブラパーサモジュールを探しましたか? –
'。* _?'は '。* 'に簡略化することができます – ikegami