6
Go to list of users who liked
4
ワイルドカードと正規表現の違い、言えますか?
Last updated atPosted at 2024-12-05
はじめに
パターンマッチング。文字列処理において非常に重要な技術ですが、皆さんは、正規表現(Regular Expressions)とワイルドカード(Wildcard)の違いとそれぞれについて答えられますか?
自身の中で混同していたので調べてまとめてみました。そんな記事です。
正規表現 (Regular Expressions)
概要
正規表現は、文字列のパターンを高度かつ柔軟に検索・マッチングするための強力なツールです。
プログラミング、テキスト処理、データ検証など、幅広い分野で活用されています。
基本文法と主な特殊文字
文字 | 意味 | 例 | マッチする文字列 |
---|---|---|---|
. | 任意の1文字 | a.c | abc ,adc ,a1c |
* | 0回以上の繰り返し | ab*c | ac ,abc ,abbc |
+ | 1回以上の繰り返し | ab+c | abc ,abbc ,abbbc |
? | 0回か1回 | colou?r | color ,colour |
^ | 行の先頭 | ^Start | "Start of line" |
$ | 行の末尾 | end$ | "This is the end" |
[] | 文字クラス | [aeiou] | a ,e ,i ,o ,u |
[^] | 否定の文字クラス | [^0-9] | 数字以外の文字 |
{n} | ちょうどn回の繰り返し | a{3} | aaa |
{n,} | n回以上の繰り返し | a{2,} | aa ,aaa ,aaaa |
{n,m} | n回からm回の繰り返し | a{2,4} | aa ,aaa ,aaaa |
\d | 数字 | \d{3} | 123 ,456 |
\w | 単語文字 | \w+ | hello ,123_abc |
\s | 空白文字 | hello\s world | hello world ,hello world |
\D | 非数字 | \D+ | abc ,Hello |
\W | 非単語文字 | \W+ | !@# ,
|
\S | 非空白文字 | \S+ | hello ,123 |
() | グループ化 | (ab)+ | ab ,abab ,ababab |
| | 選択(OR) | cat|dog | cat ,dog |
使用例
メールアドレスのバリデーション
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
電話番号のバリデーション
^\+?(\d{10,14})$
主な用途
- データ検証(メール、電話番号、郵便番号など)
- テキスト検索と置換
- スクレイピングとデータ抽出
- ログ解析
など
ワイルドカード (Wildcard)
概要
ワイルドカードは、簡単で直感的なパターンマッチング方法です。
主にファイル管理やシェルコマンドで使用されます。
主な特殊文字
文字 | 意味 | 例 | マッチする文字列 |
---|---|---|---|
* | 任意の文字列(0文字以上) | *.txt | report.txt ,data.txt |
? | 任意の1文字 | file?.txt | file1.txt ,fileA.txt |
[] | 文字セット | [aA]*.txt | apple.txt ,Article.txt |
使用例
ファイル検索
*.log
: すべてのログファイルreport_????.xlsx
: 4桁の数字を含むレポートファイル[0-9]*.csv
: 数字で始まるCSVファイル
主な用途
- ファイルとディレクトリの検索
- バッチ処理
- シェルスクリプト
- 簡単なファイルパターンマッチング
正規表現 vs ワイルドカード
主な違い
柔軟性
- 正規表現: 非常に柔軟で複雑なパターンを表現可能
- ワイルドカード: シンプルで直感的だが、限定的
複雑さ
- 正規表現: 学習コストが高い
- ワイルドカード: すぐに理解できる
用途
- 正規表現:
- データ検証
- 高度な文字列処理
- テキスト解析
- ワイルドカード:
- ファイル検索
- 単純なパターンマッチング
まとめ
正規表現とワイルドカードは、それぞれ異なる強みを持つパターンマッチングツールです。
目的と複雑さに応じて適切な方法を選択するといいでしょう。
この記事で「それぞれの違いが分かるようになったぜ!」って人が増えると幸いです。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme