正規表現が書けなくても、やりたいことを伝えれば作れた
記号の羅列で避けていましたが、例を見せれば作ってもらえます。確認の仕方も含めて書きます。

この記事の結論
- 記号を覚えなくても、例を見せれば作れる
- 合致する例と、合致しない例の両方を渡す
- 必ず少量で試してから、本番に流す
- 記号を覚えなくても、例を見せれば作れる
- 合致する例と、合致しない例の両方を渡す
- 必ず少量で試してから、本番に流す
文字列を一括で置き換えたいとき、正規表現が要る場面がある。記号の羅列に見えて避けていたが、頼めば作れると分かった。
何に使うか
実際に使った場面を挙げる。
- 記事の中の古いURLを、一括で新しいものに変える
- 決まった形の文字列を、まとめて抜き出す
- 余分な空白や改行を消す
どれも手でやると数百か所になる作業だった。
頼み方
記号を知らなくても、例で伝わる。
次の形の文字列を見つけたいです。
【合致してほしい例】
https://example.com/blog/2019/08/17/post-50/
https://example.com/blog/2020/01/05/html-tag/
【合致してほしくない例】
https://example.com/about/
https://example.com/blog/
正規表現を作ってください。
各部分が何を意味するか、説明も付けてください。合致してほしくない例を書くのが重要だ。これが無いと、広すぎる条件が作られる。
説明を付けさせる
読めなくても、説明があれば検証できる。
- 各記号が何を意味するか
- どの部分が、どの文字に対応するか
- どういう場合に合致しないか
3つ目を聞くと、見落としている場合が見つかることがある。
必ず試す
作ってもらったら、そのまま使わない。
- 合致を確認できる場所で、例を入れて試す
- 合致してほしい例が、すべて合致するか
- 合致してほしくない例が、合致しないか
3つ目を飛ばすと危ない。広すぎる条件は、意図しないものまで巻き込む。
失敗した例
実際にやった失敗を書く。
- 日付の部分を「数字なら何でも」と書いた
- 別の場所にある数字付きのURLも合致した
- 関係ないページまで書き換えた
控えがあったので戻せたが、控えが無ければ手作業で直すことになっていた。
少量で試す手順
本番に流す前の手順を決めた。
- 対象のデータを複製する
- 複製に対して実行する
- 変わった箇所を数える。想定と合うか
- いくつか抜き出して、中身を確認する
3つ目が効く。想定より多く変わっていれば、条件が広すぎる。
置換前に件数を出す
置き換える前に、何件合致するか確認している。
- 合致する件数だけを数える
- 想定していた数と比べる
- 差があれば、条件を見直す
多くの道具に、置換せずに検索だけする機能がある。先に数えるだけなら、何も壊れない。
控えを取る
一括置換の前は、必ず控えを取っている。
- 対象のファイルを複製する
- データベースなら、該当するテーブルを控える
- いつ取ったか分かる名前を付ける
一括の操作は間違えたときの被害が大きい。手作業なら途中で気づくが、一括は一瞬で全部変わる。
使える道具を知っておく
正規表現を使う場面は、道具によって書き方が少し違う。
- テキスト編集の道具。手元のファイルを扱う
- データベースの置換。サイト全体の文字列を扱う
- 検索の道具。該当箇所を探すだけ
3つ目から始めるのが安全だった。置換せずに検索だけなら、何も壊れない。まず探して、件数と中身を見てから置換に進むという順番にしている。どの道具を使うかも、頼むときに伝えると書き方が合う。
複雑になりすぎたら
条件が複雑になったときの対処も決めた。
- 1つの式で全部やろうとしない
- 2段階に分ける。粗く絞ってから、細かく絞る
- どうしても複雑なら、手作業を検討する
3つ目も選択肢だ。20件なら、手でやったほうが確実で速いこともある。
まとめ
- 記号を覚えなくても、例を見せれば作れる
- 合致してほしくない例を必ず渡す
- 説明を付けさせると、読めなくても検証できる
- 置換前に、合致する件数を数える
- 一括の操作は、必ず控えを取ってから
関連記事
RELATED
引き継いだコードを、どこから読むか
人が書いたものを触る前に、読む順番を決めました。
Remotionを入れて、最初の動画を書き出すまでにやったこと
Reactで動画を書くRemotionを入れました。手順は2つですが、記事に書かれていない前提がいくつかありました。
半年で身についた作業の順番
コードを書く作業の進め方が、固まってきました。