【ミスと手間を減らす】webデザイナーが業務効率化に使えそうな正規表現をまとめました

## はじめに 🌱
皆さん初めまして、正規表現使っていますか？
私は何回か使ったことはあるのですが、普段は全く使えていません...。

コードやテキストの差し替えの際に少しだけならと手動でやって、
変な半角スペースが入ってしまったり、Classタグ名を消しすぎてダブルクォーテーションを消してしまったりってことありますよね。私はあります...💦
（上記凡ミスで表示がおかしくなり原因判明に数時間悩まされたことも昔はありました🫠🫠🫠）

そんなある時、修正したcssファイルの影響範囲が広く、表示崩れが起こっていないかの調査を行うことになり、そのClassが記載されている数百ファイルをリストアップするとなった際に、これは「正規表現」を覚える良い機会だと悟りこの記事を書きました。（長い前置き終わりです）

## 使用環境 💻
・sublime text3
・visual studio code
など
<br>

## 使用・参考サイト ✍
#### ◆正規表現とは何なのかをわかりやすく教えてくれるサイト。

https://userweb.mnet.ne.jp/nakama/

#### ◆正規表現が上手く動いているか確認できるサイト。

https://regexr.com/

#### ◆参考サイト様たち

https://ginneko-atelier.com/blogs/entry336/

https://webnaut.jp/markup/606.html

https://qiita.com/House_of_Bourbon/items/fb5e83446cfdf4f4a782

## 正規表現早見表 👀

<table>
  <thead>
    <tr>
      <th>正規表現</th> <th>説明</th>　<th>正規表現の例</th>　<th>検索できる文字列の例</th>
    </tr>
  </thead>
  <tr>
    <td> . </td> <td>なんでもいい１文字</td> <td>私は.です</td>　<td>私は貝です、私はZです、私は0です</td>
  </tr>
  <tr>
    <td> ^ </td> <td>行の先頭</td> <td>^デザイナー</td> <td>デザイナーブック、デザイナーになるには</td>
  </tr>
<tr>
    <td> $ </td> <td>行の最後　</td> <td>デザイナー$</td> <td>WEBデザイナー、あなたはデザイナー</td>
  </tr>
<tr>
    <td> \s </td> <td>空白　</td> <td>あい\sえお</td> <td>あい えお</td>
  </tr>
<tr>
    <td> \d </td> <td>数字　</td> <td>h\d</td> <td>h1、h2、h3</td>
  </tr>
<tr>
    <td> \n </td> <td>改行　</td> <td>私は\n犬だ</td> <td>私は<br>
犬だ</td>
  </tr>
<tr>
    <td> \b </td> <td>単語の区切り　</td> <td>\b1\b\b0\b</td> <td>1と0</td>
  </tr>
<tr>
    <td> * </td> <td>直前の文字が０個or1個以上連続する場合</td> <td>はー*い</td> <td>はい、はーい、はーーい</td>
  </tr>
<tr>
    <td> + </td> <td>直前の文字が1個以上連続する場合</td> <td>はー+い</td> <td>はーい、はーーい、はーーーい</td>
  </tr>
<tr>
    <td> ? </td> <td>直前の文字が０個or1個の場合</td> <td>Windows ?98</td> <td>Windows98、Windows 98</td>
  </tr>
<tr>
    <td> | </td> <td>いずれかの文字列</td> <td>田中|佐藤|伊藤</td> <td>田中、佐藤、伊藤　のみ抽出</td>
  </tr>
<tr>
    <td> [ ] </td> <td>指定した文字のどれか</td> <td>それは[A-Z]です</td> <td>それは（A〜Z）です　のみ抽出</td>
  </tr>
<tr>
<td>（）</td><td>（）内をグループ化</td> <td>それは（私|僕）です</td> <td>それは私です、それは僕です　を抽出</td>
  </tr>
</table>

## 汎用的に使いやすいと感じた正規表現たち 😊

#### <font color="#15aaa1">◆ 組み合わせしやすい正規表現<font>

`●●● ?,●●●s?`


複数形や、半角スペースありなしで検索できたりと地味に便利。
<br>

`[A-Z]　`


A〜Zを検索！他の正規表現と組み合わせやすい！（**小文字は含まれないので注意！**）
<br>

`[0-9]　`

上記の数字版。0〜9を検索できます。
<br>

`[あ-ん]　`

あ〜んが検索できます。

:::note warn
濁点/半濁点がついたものも検索されるので注意（ＪＩＳ漢字コード表の並びに紐付いているらしいです）
:::
<br>

`[A-Z0-9]　`

[ ]内で続けることで、A〜Zと0〜9を条件に検索できます。
<br>

`[^A-Z0-9]　`

A〜Zと0〜9を**除いて検索**できます。これも使いやすい。
<br>

`（●▲）+`

「●▲」の１回以上の繰り返しで検索ができる。
<br>



#### <font color="#15aaa1">◆ 使用頻度高めな正規表現</font>

```html:検索
\n+
```
```html:置換
\n
```

見やすくするために入れていた改行もコーディング終了時にこれで一括掃除！
<br>

```html:検索
[亜-熙ぁ-んァ-ヶ] [亜-熙ぁ-んァ-ヶ]
```
```html:置換
なし
```

日本語の間の空白を取り除く
<br>

`●●●(.+)▲▲▲`

●●●で始まり、▲▲▲で終わるものをすべて検索！
<br>

#### <font color="#15aaa1">◆ 頻繁には使わないが、使い勝手の良い正規表現</font>

```html:検索
([0-9]+)/([0-9]+)/([0-9]+)
```
```html:置換
$3/$1/$2
```

検索の正規表現は、/で区切られるまで連続する数字を検索できる。**（日時を検索する時におすすめ）**
置換の正規表現は、検索したものの**順番を入れ替えられる。**（月/日/年を年/月/日に入れ替えたりできます！）

:::note
$nは「置換前」に（）で囲った箇所を置換前のまま使用する(数字nは何番目の括弧かを指定している！)
:::
<br>

```html:検索
<div id=".*">
```
```html:置換
<div id="置き換えしたい文字列">
```

一括で置き換えたい時に。
<br>

```html:検索
<("[^"]*"|'[^']*'|[^'">])*>
```
```html:置換
なし
```
HTMLタグを削除できます。

:::note
HTMLから文字だけ抽出したい場合に！
:::
<br>


```html:検索
\b[0-9]\b|\b[1-9][0-9]\b
```
```html:置換
なし
```
0〜99を検索できる。

:::note
\bで挟むことで24を2と4に分けずにHITさせることができる。
:::


## さいごに 📝
まだ他にもたくさん使える部分はあると思いますが、今回の部分を組み合わせていけばより作業効率が上がると思います！！
これからも正規表現を活用できるように頑張っていきましょう💪