正規表現(Regex)入門
強力なテキストパターンマッチングに役立つ正規表現の構文と基本概念を理解します。
「正規表現(Regex)入門」はCoddyKit上の無料Linux Command Line & Bash Scripting Masteryレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Command Line & Bash Scripting Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
正規表現とは
正規表現(Regular Expressions)は、一般にRegexと略される、テキストの検索や操作に使う強力なパターンです。
テキスト内の特定の文字列、文字、さらには位置まで一致させられる、非常に強力な検索条件だと考えてください。
正規表現は、プログラミングやスクリプト、Linuxのgrep、sed、awkのようなコマンドラインツールで広く使われています。
リテラル文字のマッチング
最も単純な正規表現は、文字をそのまま正確に照合します。「apple」を検索すると、正確に「apple」と一致する文字列が見つかります。
grepコマンド(Global Regular Expression Print)を使って、この基本的なマッチングを確認してみましょう。
echo "apple" > fruits.txt
echo "banana" >> fruits.txt
echo "pineapple" >> fruits.txt
grep "apple" fruits.txt
rm fruits.txtドット:任意の1文字
ドット(.)は、改行を除く任意の1文字にマッチする特殊文字です。
1つの位置に使えるワイルドカードのようなものです。たとえば、c.tは「cat」、「cot」、「cut」にマッチします。
echo "cat" > words.txt
echo "cot" >> words.txt
echo "cut" >> words.txt
echo "coat" >> words.txt
grep "c.t" words.txt
rm words.txtアスタリスク:0回以上(*)
アスタリスク(*)は、その直前にある文字またはグループの出現に対して、0回以上マッチする量指定子です。
たとえば、colou*rは「color」(「u」が0個)と「colour」(「u」が1個)にマッチします。
echo "color" > spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
echo "cold" >> spellings.txt
grep "colou*r" spellings.txt
rm spellings.txtプラス記号:1回以上(+)
プラス記号(+)は、直前にある文字またはグループの出現に対して1回以上マッチします。
*とは異なり、その要素は少なくとも1回は出現する必要があります。そのため、go+gleは「google」や「gooogle」にはマッチしますが、「ggle」にはマッチしません。
注:+、?、{}をgrepで直接使うには、拡張正規表現を有効にする-Eオプションが必要になることがよくあります。
echo "google" > search.txt
echo "goooogle" >> search.txt
echo "ggle" >> search.txt
grep -E "go+gle" search.txt
rm search.txt疑問符:0回または1回(?)
疑問符(?)は、直前にある文字またはグループの出現に対して0回または1回マッチします。
これにより、文字を任意に指定できます。たとえば、colou?rは「color」(「u」が0個)と「colour」(「u」が1個)にマッチします。
echo "color" >> spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
grep -E "colou?r" spellings.txt
rm spellings.txtアンカー:開始(^)と終了($)
アンカーは文字にマッチするのではなく、テキスト内の特定の位置にマッチします。
^は行の先頭にマッチします。$は行の末尾にマッチします。
例:^appleは、行の先頭にある場合にのみ「apple」にマッチします。apple$は、行の末尾にある場合にのみ「apple」にマッチします。
echo "apple pie" > menu.txt
echo "fresh apple" >> menu.txt
echo "apple" >> menu.txt
grep -E "^apple" menu.txt
grep -E "apple$" menu.txt
rm menu.txt文字クラス:角括弧([])
角括弧([])は文字クラスを定義し、その集合に含まれる任意の1文字にマッチします。
[aeiou]は任意の母音1文字にマッチします。[0-9]は任意の数字1文字にマッチします。[a-zA-Z]は任意の英字1文字にマッチします。
[^...]を使うと、クラスに含まれない文字を指定することもできます。たとえば、[^aeiou]は母音ではない任意の文字にマッチします。
echo "cat" > animals.txt
echo "bat" >> animals.txt
echo "rat" >> animals.txt
echo "cot" >> animals.txt
grep -E "[cb]at" animals.txt
grep -E "[^cbr]at" animals.txt
rm animals.txt量指定子:波括弧({})
波括弧({})は、その直前にある文字またはグループの繰り返し回数を指定する量指定子です。
a{3}は「aaa」にマッチしますa{2,}は「aa」、「aaa」、「aaaa」などにマッチします(2回以上)a{2,4}は「aa」、「aaa」、「aaaa」にマッチします(2回以上4回以下)
これらの量指定子を使うときは、grep -Eを使用してください。
echo "helllo" > greetings.txt
echo "hello" >> greetings.txt
echo "helo" >> greetings.txt
grep -E "hel{2,3}o" greetings.txt
rm greetings.txt正規表現クイックチェック
次の文字列について考えてみましょう。
bananabanaanabanaananabna
「banana」と「banaana」だけにマッチする正規表現はどれでしょうか。
正規表現の基礎のおさらい
正規表現の基本を学びました。
- 正規表現では、パターンを使ってテキストを検索・操作します。
- リテラル文字は、それ自体にマッチします。
.、*、+、?、^、$、[]、{}などの特殊文字によって、高度なマッチングが可能になります。
次は、grepコマンドとそのさまざまなオプションを使って、より高度なテキスト検索にこれらのパターンを応用します。
よくある質問
「正規表現(Regex)入門」レッスンは無料ですか?
はい。「正規表現(Regex)入門」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Command Line & Bash Scripting Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
「正規表現(Regex)入門」で何を学びますか?
強力なテキストパターンマッチングに役立つ正規表現の構文と基本概念を理解します。 ブラウザで直接実行するハンズオンコードでLinux Command Line & Bash Scripting Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Command Line & Bash Scripting Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Command Line & Bash Scripting Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「正規表現(Regex)入門」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Command Line & Bash Scripting Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Command Line & Bash Scripting Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 正規表現(Regex)入門
- 正規表現を使った高度なGrep
- 正規表現とsed/awkの組み合わせ
- キャプチャグループ、後方参照、置換