最近正規表現に関して学んだので、Qiitaに書いておきたいと思います✋
正規表現とは
wikiの説明だと、「文字列の集合を一つの文字列で表現する方法の一つ」となっています。
文字列を検索、置換、検証等する際、複雑なパターンを指定するための方法
の方がわかりやすいかもしれません。
- 特定の文字列が含まれる文字列
- 特定の文字列で始まる文字列
- 特定の文字列で終わる文字列
- 特定の文字列が連続して含まれる文字列
などそれぞれ行いたい表現方法があると思います。
正規表現の例
記号 | 説明 | 例 |
---|---|---|
^ | 行の先頭 | ^a:文字列がa で始まる |
$ | 行の末尾 | a$:文字列がa で終わる |
. | 任意の1文字 | a.b:文字列がa の後に任意の1文字、その後に b が続く |
* | 0回以上繰り返し | a*:a が0回以上繰り返される |
+ | 1回以上繰り返し | a+:a が1回以上繰り返される |
? | 0回または1回繰り返し | a?:a が0回または1回繰り返される |
[] | 文字クラス | [abc]:a、b、c のいずれかの文字 |
() | グループ化 | (abc)+:「abc」が1回以上繰り返される |
実際にこの表だけ見ても、ピンとこない方もいるかもしれないので、実際に正規表現が動くのか確認してみます。
https://rubular.com/
こちらのサイトは正規表現チェッカーの一つですが、こちらは主に Ruby 言語に基づいた、基本的な正規表現の構文は他の多くの言語と共有されています(JavaScript、Python、PHP、Java など)。
正規表現の例にある行の先頭を実際に書いてみる
行の先頭を「あ」にするパターンを作り、「あんぱんまん」と記入すると、右側の結果にしっかり表示される。
仮に同じパターンで「カレーパンマン」と記入すると、表示されない。
めちゃくちゃ簡単な例ですが、文字列の制限ができています。
正規表現にはプログラミング言語によって変わる。
正規表現は、プログラミング言語によって、書き方が異なります。
例えば、カタカナのみの検索を記載する際、
Rubyの場合、
/[\p{katakana} ー-&&[^ -~。-゚]]+/
Javascriptの場合
/^[ァ-ンヴー]*$/
このように言語によって正規表現の書き方が違うというのが注意です。
※サイトが多くの言語対応のため、わかりにくいかもしれないですが、、
このように正規表現は、特定の文字列のパターンにすることができます。
統一じゃないのが、なかなか大変ですが、とても便利ですし、開発時によく使われることなどあるので、ぜひ調べてみてください!