正規表現のおすすめ本(入門書籍)!使い方Tipsまとめ!

プログラミング学習

この記事では個人的によく使う正規表現のメモをまとめていきます。実用レシピとして少しづつ追加します。

テキストエディタの秀丸、Googleスプレッドシート、Javascript(Vue)、ブログ運営、電子書籍の作成など今までいろいろな環境で利用してきました。

ちょっととっつきにくいかもしれませんので、持っているおすすめ本もあわせて紹介していきます。

正規表現のおすすめ入門本(電子書籍もあり)

個人的に持っている書籍を何冊か紹介しましょう。バイブルといえば、この本でしょう。

著:Jeffrey E.F. Friedl, 翻訳:株式会社ロングテール, 翻訳:長尾 高弘
¥5,280 (2022/09/19 02:23時点 | Amazon調べ)

辞書的にひいたいなら、この本です。キンドル版もでています。Amazonで目次が試し読みできます。

著:佐藤 竜一
¥2,673 (2022/09/19 02:24時点 | Amazon調べ)

他にもUdemy(動画講座)でも正規表現の評判がよい講座がいくつかあります。

udemyで動画の正規表現講座が開催

Udemy

udemyで動画の正規表現講座が開催しています。書籍より安い値段の場合も多いので、よかったら見てみるといいかも。

他のおすすめ講座の記事もよかったらあわせてみてください。

セールの時期はこちら!まだ一度も利用したことがないなら是非おすすめです。セール時は書籍より安くなります。

正規表現のおすすめ入門書籍(秀丸)

個人的には秀丸ユーザーのため、以前秀丸の本も買いました。詳細はこちらです。

秀丸エディタのアウトライナー設定/おすすめ連続置換マクロ
長年秀丸を愛用しています。新しいものも試しているのですが、冷静に比較すると秀丸を選んでしまいますね。古きよきものであり、新しいものがいまだ超えられないという感じでしょうか。高速なのが大きいですかね。特にマクロの蓄積が多いITの大企業やエンジ...

正規表現や言語をオンラインのプログラミングスクールで学ぶ

言語をプログラミングケースで学ぶ場合はこちらの記事をみてください。オンラインのプログラミング教室はかなり格安で学べます。エンジニアならわりとみんな正規表現ができますから、何かのついでに聞いてもよいでしょう。

社会人・学生に安いオンラインプログラミングスクール比較/Javascriptやc#のスキルアップでおすすめは?
エンジニア・プログラマーになりたい人のために、オンライン版のプログラミングスクール比較していきます。初心者大人向けにおすすめで安いプログラム教室も紹介しますよ。個人的にはブログを運営しているため、WordPressのPhPやCssもカスタマ...

c言語やphp、aiなど何でもありますよ。

スポンサーリンク

正規表現の使い方

正規表現で行頭と行末にリストタグを挿入・追加する方法

正規表現で行頭と行末にliタグを追加する方法です。

検索文字列 ^(.+)
置換文字列 <li></li>

^行頭の、(.+)文字列を選択します。\1は正規表現でマッチしたパターンの1つ目。

置換前です。

りんご
みかん
ぶどう

置換後です。

<li>りんご</li>
<li>みかん</li>
<li>ぶどう</li>

pタグを使うと以下のようになります。

日記です。

今日は雨でした。
<p>日記です。</p>

<p>今日は雨でした。</p>

空行はあってもマッチしないないため問題ありません。

ちなみに、\2は正規表現でマッチしたパターンの2つ目です。\3は正規表現でマッチしたパターンの3つ目です。電話番号などで文字列のパターンが切れているものを想像するとわかりやすいでしょう。

03-0000-0000

\0はマッチした文字列全体です。今回は2番目のパターンはないものとして考えています。

秀丸の場合、連続置換マクロを使うと便利です。詳細はこちらの記事をみてください。

秀丸エディタのアウトライナー設定/おすすめ連続置換マクロ
長年秀丸を愛用しています。新しいものも試しているのですが、冷静に比較すると秀丸を選んでしまいますね。古きよきものであり、新しいものがいまだ超えられないという感じでしょうか。高速なのが大きいですかね。特にマクロの蓄積が多いITの大企業やエンジ...

javascriptでregexp gのflag

基本。

const reg = new RegExp( patern, flag );

フラグにグローバルマッチのgを使うと

const keywords = [keywords1, keywords2]
const result = new RegExp(keywords.join('|'), 'g')
console.log( result ); // ["keywords1,", "keywords2,"]

RegExpは文字列内にある、指定した複数のパターンを、すべて置換します。
RegExpの’g’をつけないと違った形の配列が返ってしまうため、キーワードを取り出したいとき、’g’は必須です。

gは第2引数であり、RegExpの場合、第1引数に/gをつけてもnullがかえります。

const array = [keywords1, keywords2]
array.join( separator )

こちらはjoinの構文です。配列はjoin(‘|’)なら1つの文字列にできます。|はorです。もちろんseparatorにはいろいろなものが使えます。

RegExpを使わなくてもかけますが、RegExpはエスケープ処理をかかなくていいため、わかりやすいかもしれません。

正規表現ですべてのurlにマッチさせる方法(置換/削除)

^((?:https?:\/\/)?[^./]+(?:\.[^./]+)+(?:\/.*)?)$

stackoverflowさんのサイトが役立ちます。

regex to match a URL with optional 'www' and protocol
I'm trying to write a regexp.some background info: I am try to see if the REQUEST_URI of my website's URL contains another URL. like these: However, t...

こちらは以前、秀丸ではなくGoogleスプレッドシートに利用しましたが、基本的に同じです。置換先を空欄にすると削除できます。

正規表現の かつ 含まれない

(PATTERN)(!PATTERN)

かつは括弧で囲ってあげればいいだけ。否定系はおなじみの!。

必要に応じて行頭や行末の加味するからこうなります。

^(?!PATTERN).*$

いらない場合もあります。eslintだと次のように修正されます。

const Reg = ラーメン(
  !みそ
)

特定の文字列を含まれる行を消す置換

検索は下記。

^(.*#).*\n

置換先は空。

検証用のテキスト。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaa#aaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa#
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

シャープが含まれるurlだけ削除したかったため、作りました。

Google Search ConsoleのCSVって目次のデータが含まれているんですね。目次に飛んだデータだけ消したかったため作りましたね。

シャープのurlがすべて削除されます。純粋な記事数のみ残るため、アクセスがない記事を修正や削除する際に目安をつけやすいです。

正規表現の空行を削除

空行を削除します。

置換前です。

あああ
(空行)
いいい

置換後です。

あああ
いいい

置換する方法です。

検索文字列 ^\n
置換文字列

こちらは簡単な例でした。

英数字

JavaScriptで使いました。

/^[a-z0-9]+$/

英数字とハイフンとアンダースコア

JavaScriptで使いました。

/^[a-z0-9\d-\d_]+$/

正規表現でダブルクォーテーションに囲まれた部分を選択 

id="([^"]*)"

正規表現のコツ

  • テキストエディタの検索で正規表現のチェックをいれてちゃんとひっかかるか見ることです。
  • できるだけ短い文字列で抜くことですね。長くなるとミスりがちです。

ご参考になれば幸いです。

コメント