テキスト 🔒 ブラウザ内で動作 — データは送信されません

正規表現で検索・置換

正規表現でテキストを書き換え、実際のファイルに適用する前に結果を確認できます。

/ /
テスト文字列
マッチとグループ
ここにマッチが表示されます…

正規表現で検索・置換をオンラインで

正規表現による検索と置換は、テキストを整えるいちばん速い方法の1つですが、1000行を一度に書き換えるときには失敗しやすい方法でもあります。このページは、動作するサンプルを入れた状態で正規表現テスターを開きます。パターン集の重複した単語のパターン\b(\w+)\s+\1\bと、置換文字列$1です。サンプルの文は、重複した単語がすべて取り除かれた形で置換結果に表示されます。

サンプルの仕組み

(\w+)が単語をキャプチャし、\s+がその後の空白や改行にマッチし、\1が同じ単語をもう一度求めます。両端の\bがあるので長い単語の内側ではマッチせず、「the theory」はそのまま残ります。iフラグにより「This this」も重複として数えられ、$1は最初の表記を残します。「This this is a a typo」は「This is a typo」になります。

置換で使えるトークン

トークン挿入されるもの
$1, $2その番号のグループのテキスト
$<name>名前付きグループのテキスト。例:(?<year>\d{4})
$&マッチ全体
$`マッチより前のすべて
$'マッチより後のすべて
$$ドル記号そのもの

一括置換の前にテストする

置換の大失敗の多くは、意図したより多くにマッチするパターンから生まれます。変えてはいけない行も含めて代表的なサンプルを貼り付け、結果を信用する前に強調表示されたマッチを読んでください。よくある落とし穴は2つです。貪欲な.*は行の中で可能な限り最後のマッチまで伸びること、そしてgフラグがないと最初のマッチしか置換されないことです。

ほかの文字体系の単語

JavaScriptでは、\wと\bが知っているのはAからZの文字、数字、アンダースコアだけなので、このサンプルは繰り返された「café」やペルシア語の単語を見逃します。フラグをgiuにすれば、パターン(?<![\p{L}\p{N}_])([\p{L}\p{N}_]+)\s+\1(?![\p{L}\p{N}_])があらゆる文字体系で同じ役割を果たします。

関連ページ

JavaScript 正規表現テスターでは、このページの背後にあるフラグとエンジンを説明しています。URLの正規表現は置換に使うのにも向いたパターンで、例えば[$&]($&)でむき出しのリンクをMarkdownに変えられます。15種類の出来合いのパターンをすべて備えたツール本体は正規表現テスターです。

関連ガイド