にターゲットの前と後の単語をキャプチャする:コールスタックポインタがバインドスタックを超えた場合、ソフトウェアでは正規表現は、我々が持っていると仮定したテキストルビー
を、スタックオーバーフローが発生します。コールスタックは、限られた量のアドレス空間で構成され、多くの場合、プログラムのstartで決定されます。コールスタックのサイズは、プログラミング言語、マシンアーキテクチャ、マルチスレッド、使用可能なメモリの量など、多くの要因によって異なります。
私がやっていることは、特定の単語(ターゲット)の前後に2単語を見つけることです。たとえば、ターゲットが単語の場合、の場合は、「at
」「the
」(左)と「of
」「the
」(右)と一致する必要があります。私はルビーで次のメソッドを使用していますが、一致するものは返しません。私の正規表現で修正するためのヒント私もRegex.escape
の代わりに "#{target}
"を試しました。
def checkWords(target, text, numLeft = 2, numRight = 2)
regex = ""
regex += " (\\S+) " * numLeft
regex += Regexp.escape(target)
regex += " (\\S+)" * numRight
pattern = Regexp.new(regex, Regexp::IGNORECASE)
matches = pattern.match(text)
return true if matches
end
編集:印刷
正規表現:Wiktor第Stribiżewに基づいて
(\S+) (\S+) "£52" (\S+) (\S+)
編集:
def checkWords(target, text, numLeft = 2, numRight = 2)
pattern = Regexp.new(/#{"(\\S+) "*numLeft}#{Regexp.escape(target)}#{" (\\S+)"*numRight}/i)
matches = pattern.match(text)
end
'regex'の値をログに記録して質問に追加してください。 –
'(\\ S +) 'のスペースが2倍になります。 'regex + ="(\\ S +) "* numLeft'を使います。 –
は私の正規表現のプリントを含んでいます – Vas