スペースとのマッチングの使い方が間違っていると思います'\b'
が、JavaScript の正規表現'\b'
は単語の先頭または末尾と一致します。
したがって/([\w]+)\b/
、正規表現のこの部分は、 word の最後までしか一致しません'last'
。残りの文字列は' first'
(先頭のスペースに注意してください)。
次に、これが必要な残りと一致させるために、これは「任意の単語文字または空白文字の 1 つ以上の出現」([\w ]+)
に変換されます。これは、残りの文字列と一致させる必要があるものです。' first'
単語が入れ替わっていても、単語の前にスペースがあることに注意してください'first'
。
これをさらに証明するには、入力を次のように変更したとします。
var toswop = 'last first another\nlast first another\nlast first another';
スワップされたテキストが次のようになることがわかります
first another last
first another last
first another last
これは、正規表現の最後のセグメントが([\w ]+)
スペースと単語文字の両方と一致し続け、一致に「another」という単語が含まれていたためです。
ただし、角かっこからスペースを削除すると、残りの部分と一致しませ' first'
ん。これは、「word character」の文字列ではなく、「space」+「word character」の文字列であるためです。
そのため、ここではスペースが重要です。
しかし、次のように正規表現を変更すると:
swapped = toswop.replace(/([\w]+)\s([\w]+)/g,'$2 $1');
次に\s
、2つの単語の真ん中にあるスペースと一致するため、スペースなしで機能します。
これで質問が明確になることを願っています。
JavaScript 正規表現構文については、http ://www.w3schools.com/jsref/jsref_regexp_begin.asp を参照してください。
もっと実験したい場合は、私のフィドルについてはこちらを参照してください:http://jsfiddle.net/BuddhiP/P5Jqm/