• ベストアンサー

この正規表現の意味は?

あるスクリプトに replace(new RegExp("( ?|^)word\\b"), ""); とありました。この ( ?|^)word\\b の意味がどうしても分かりません。 どんな意味でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.3

( ?|^)word\bは、 「 ?word\b」または「^word\b」です。 さらに、「 ?word\b」は、 「 word\b」または「word\b」です。 結局 「^word\b」または 「 word\b」または 「word\b」 のいずれかにマッチするということになります。 (^は、行頭を意味し、\bは単語の区切りを意味します。) そして、このパターンにマッチした文字列をreplaceで削除します。 もう少しわかりやすく言えば、wordという文字列を削除しますが、 「aaaword!」のようにwordの前になにか文字列があっても「aaa!」となります。 「wordaaa!」のようにwordの後に単語文字が続く場合はwordは削除しません。 「aaa word!」のようにwordの前にプランクがある場合は、 ブランク文字を含めて削除し、「aaa!」となります。 結局「^」の指定はあまり意味がなく、 「 ?word\b」としても同じだと思います。

benneb
質問者

お礼

ありがとうございました。理解できました。 およその見当はついていたのですが、最後の\\となっている点が分からなかった原因です。「\b」で区切りを意味し、それをエスケープしていたのですね。先頭の?の前にあるスペースも見逃していました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>( ?|^)word\\b 「 ?」が怪しいですね。 wordの前のスペースであれば?はいらないですから・・・

noname#108428
noname#108428
回答No.1

正規表現といっても、言語ごとに差異がありますんでね。 何の言語で書かれたスクリプトなのかくらいは書いた方が良いですよ。 まあ、それが分かってれば、 普通はリファレンスサイトを見て判断できるんですけどね。

benneb
質問者

補足

もちろんJavaScriptなんですが。

関連するQ&A