正規表現でよく使うメタ文字

#よく使うメタ文字
正規表現を学び始めた人向けに、よく使う正規表現のメタ文字をまとめました。

※メタ文字とは、その文字本来の意味とは異なり、プログラムで特別な意味を持たせた文字のことである。([引用/weblio辞書](https://www.weblio.jp/content/%E3%83%A1%E3%82%BF%E6%96%87%E5%AD%97))


##指定した直前文字の繰り返し用
###「+」

・「+」は指定した直前の文字を「1」回以上繰り返したい時に使います。

「+」直前にに数字が指定されているため、数字が入っている場合のみ一致します。

```
a[0-9]+a
```

| 入力値   | 結果 |   備考 　　　　　　　                  |
|:--------:|:-----:|:-------------------------------------|
| a0a     | ○    |                                      |
| a1234a  | ○    |                                      |
| aa      | ×    | 「a」の後に「0-9」が入っていないため    |

###「*」

・「*」は指定した直前の文字を「0」回以上繰り返したい時に使います。

「*」直前に数字が指定されているため、数字を有無に関係なく一致します。

```
a[0-9]*a
```

| 入力値   | 結果 |   備考 　　　　　　　                  |
|:--------:|:-----:|-------------------------------------:|
| a0a     | ○    |                                      |
| a1234a  | ○    |                                      |
| aa      | ○    | 　　　　　　　　　　　　　　　　　　　   |

###「?」

・「?」は指定した直前の文字を「0」回または「1」回繰り返したい時に使います。
「?」直前に数字が指定されているため、数字を「0」回または、「１」回繰り返したい時に一致します。

```
a[0-9]?a
```

| 入力値   | 結果 |   備考 　　　　　　　                　　 |
|:--------:|:-----:|----------------------------------------:|
| a0a     | ○    |                                         |
| a1234a  | ×    | 「a」の後に「0-9」が2回以上入っているため  |
| aa      | ○    | 　　　　　　　　　　　　　　　　　　　     |


また、{}を使うことで繰り返したい回数の指定や、1～7回までの間繰り返すなどの指定もできます。

##行頭、行末の指定
###「^」

・「^」を使用することで行頭を指定することが出来ます。
「^」の後に「a」があるため「a」からはじまる場合のみ一致します。

```
^a
```
| 入力値   | 結果 |　　　　　　備考                  |
|:--------:|:---:|:--------------------------------|
| a0a     | ○    |                                 |
| aa      | ○    |                                 |
| bb      | ×    | 最初の文字が「b」が入っているのため|
| ba      | ×    | 　　　　　　　〃　　　　　　　　　|

###「$」
・「$」を使用することで行末を指定することが出来ます。
「$」の直前に「a」があるため「a」で終わる場合のみ一致します。

```
a$
```
| 入力値   | 結果 |　　　　　　備考 　　　　　|
|:--------:|:-----:|:--------------------------|
| a0a     | ○    |                          |
| ba      | ○    |                            |
| bb      | ×    | 最後の文字が「a」でないのため|
| bbab    | ×    | 　　　　　　　〃　　 　　　　|


##条件選択
・「|」を使用することで複数の条件を選択できます。
「|」で区切られた文字「ab」、「de」、「gh」のいずかがある場合一致します

```
ab|de|gh
```

| 入力値   | 結果 |   備考 　　　　　　　      |
|:--------:|:-----:|:--------------------------|
| ab      | ○    |「ab」                           |
| abcdefgh| ○    |   「ab」c「de」f「gh」                         |
| abdegh  | ○    |「ab」「de」「gh」 |
| aaab    | ○    | aa「ab」　　　　　　　　　 　　　　|
| ba      | ×    | 文字列に「ab」、「de」、「gh」のいずれかが、入っていないため|
| ced     | ×    | 　　　　　　　〃　　 　　　　|
| aaddb   | ×    | 　　　　　　　〃　　 　　　　|

##エスケープ文字
・「\」を使用することで[\]直後のメタ文字をエスケープすることが出来ます。
「\」の直後に「-」があるため「-」はメタ文字としてではなく、「-」文字として使用できます。

```
[a\-z]
```

| 入力値   | 結果 |　　　　　　　　　　　　備考 　　　　　　　      |
|:--------:|:-----:|:--------------------------|
| ab      | ○    |                      |
| -       | ○    |                            |
| b       | ×    | 文字列に「a」、「-」、「z」のいずれかが、入っていないため()|
| z       | ○    | 　　　　　　　　　 　　　　|
| x       | ×    | 文字列に「a」、「-」、「z」のいずれかが、入っていないため|
| zx      | ○    | 　　　　　　　　　 　　　　|
| b-      | ○    | 　　　　　　　　　 　　　　|
| cde     | ×    | 文字列に「a」、「-」、「z」のいずれかが、入っていないため|

##まとめ
上記で紹介したメタ文字は正規表現を使う上で必須といってもいいぐらい、使いますのでぜひ覚えておいて損は無いはずです。

実際に上記のメタ文字を使って、正規表現を書いてみました。
よろしければご覧ください。
[正規表現でよく使うメタ文字　その2](ec45c226ab7829cc0130#_reference-1b637cc732b1e1d69543)