1
入力文字列が長すぎるか、新しい行があると思います。正規表現の遡及的バックトラッキングをスキップする方法
正規表現ではどうすればよいですか?
/^.+ (\S+) (\S+) (\S+) #{target} (\S+) (\S+) (\S+) .+$/
編集:例(より大きい)の入力において
:
Nソフトウェアコールスタックポインタが結合したスタックを超えた場合、スタックオーバーフローが発生します。コールスタックは、限られた量のアドレス空間で構成され、多くの場合、プログラムのstartで決定されます。コールスタックのサイズは、プログラミング言語、マシンアーキテクチャ、マルチスレッド、使用可能なメモリの量など、多くの要因によって異なります。 (左)と「プログラムの」「で決定」:
私はターゲットを想定したい番組である場合
そこで抽出された単語の前後3つの単語と3つの単語を抽出するを開始(右)
EDIT2:
@DenysSéguretコメント致命的なバックトラックを回避した後。正規表現は、Rubyでこのように構築されています。
regex =""
regex += "(\\S+) " * numLeft
regex += " #{target}"
regex += " (\\S+)" * numRight
pattern = Regexp.new(regex, Regexp::IGNORECASE)
matches = pattern.match(input)
それはちょっとあなたが達成したい何をすべきかに依存します。 – mudasobwa
入力/出力の例がありますか? –
申し訳ありません私の質問を編集 – Vas