このようなもの:
/(^|\.\s+)(foo3[^.]*\.)/
前の文をマークするピリオド (または最初の文の場合は文字列の先頭) を検索し、その後にスペース、開始文字シーケンス (この場合はfoo3
)、その後に続くすべての非ピリオド文字を検索します。その文を終了するピリオド。
デモ: http://www.rubular.com/r/ROl2odiDn5
実際に文を置き換える方法は次のとおりです。
var str = "foo bar. foo3 bar3. foo2 bar2.";
var regex = /(^|\.\s+)(foo3[^.]*\.)/g;
str = str.replace(regex, "$1new sentence.");
alert(str);
この例では、正規表現 replace を使用して、一致した余分な文字 (前の文のピリオド) を 経由で組み込み$1
、その後に古い文を置き換える新しい文を追加します。これにより、段落内の他の文の状態が変更されないことが保証されます。/g
(global) フラグを使用しているため、この例では一致するすべての文が更新されることにも注意してください。最初の文だけを変更したい場合は、 を削除するg
か、先頭の単語を追加して文の一致をより具体的にします。
デモ: http://jsfiddle.net/qPxFp/2/