site logo
zenn logo
正規表現についてまとめてみた
2024年3月6日

正規表現についてまとめてみた

正規表現とは「文字列の集合を1つの文字列で表現する方法の1つである」とWikipediaさんは言っています。

そこで今までどうなっているのかわからずネットに記載されている正規表現を使ってきたが、今こそこの流れを断ち切って、この記事を通して正規表現マスターになろうと思う。

この記事では謎の正規表現についてまとめられています。

この記事を作成するにあったて参考にしたサイト、URLは以下の通り。

初学者が一番初めに読むべき正規表現入門 - セキュリティ専門企業発、ネットワーク・ログ監視の技術情報 - KnowledgeStare(ナレッジステア)
この記事では正規表現を知らない方に向けて簡単な例と共に解説します。必要最小限な所だけをまとめましたので初学者の方は他の文献を見る前にまずこの記事を読むことをおすすめします。
初学者が一番初めに読むべき正規表現入門 - セキュリティ専門企業発、ネットワーク・ログ監視の技術情報 - KnowledgeStare(ナレッジステア) favicon https://www.secuavail.com/kb/practical-post/regex-introduction/
初学者が一番初めに読むべき正規表現入門 - セキュリティ専門企業発、ネットワーク・ログ監視の技術情報 - KnowledgeStare(ナレッジステア)

メタ文字とその用途

メタ文字とは、正規表現において特別な意味を持つ文字のことを指します。 正規表現でよく使用するメタ文字は以下の通り。

metacharacter meaning
^ $ 行の先頭、行の最後
[] 指定した文字のどれか
[^] 指定した文字以外
| または
* + ? 直前の文字の繰り返し
{} 直前の文字の指定した回数の繰り返し
() グループ化
\ メタ文字の打ち消し

行の先頭^と行の最後$

^を使用すると行の先頭にあるabcのみ一致します。

example 1

$を使用すると行の最後にあるabcのみ一致します。

example 2

任意の1文字.

.は任意の1文字(なんでも良い1文字)を示します。

よってa.cを用いると以下のような結果となり、abc adcが一致します。

example 3

指定した文字の1文字[]

[]を使用するとその中のどれかの1文字を示すことができます。

よって[abc]を用いると、以下のような結果となります。

example 4

また[abc][a-c]と等価です。

example 5

これと同じように、小文字は[a-z]、大文字は[A-Z]、数字は[0-9]と書くことができます。

example 6

[A-Z]

example 7

[0-9]

example 8

指定した文字以外[^]

[^]の中に文字を指定することで、その文字以外を指すことができます。

例えば、a以外を指定する場合、[^a]と書きます。

example 9

大文字以外であれば[^A-Z]と書きます。

example 10

または|

|を使用すると、2つ以上の正規表現を示すことができます。

example 11

ちなみに複数指定可能です。

example 12

直前の文字の繰り返し* + ?

直前の文字の繰り返しには* + ?があり、それぞれ直前の文字の繰り返す数が異なっています。

*は0回以上を示します。

example 13

+は1回以上を示します。

example 14

?は0または1回を示します。

example 15

直前の文字の指定した回数の繰り返し{}

{}の中に任意の数字を入れることで直前の文字の繰り返し数を指定できます。

例えば、ab{2}cとするとabbcが一致します。

example 16

3度繰り返している文字を指定する場合は、{3}を指定します。

example 17

グループ化

()を使うと任意の文字を1つの単位として扱うことができます。

例えば、(ab)*cとすると、abを0回以上繰り返す、と示します。

example 18

また、(ab){2}cとすると、abを2回繰り返す、と示します。

example 19

メタ文字の打ち消し\

\はメタ文字の打ち消しに使えます。

例えば、.を文字として正規表現に加える場合、メタ文字として.は存在しているので、指定できません。

example 20

しかし\.と指定することで、.を文字として示すことができます。

example 21

まとめ

いかがだったでしょうか?正規表現は難しい印象を持ちがちですが、意外と「やれるのでは?」と思った人もいるのではないでしょうか。

正規表現のあの謎の長い呪文のような文字列も、1つ1つ紐解けば案外、簡単なのかもしれません。