今号では、前号に引き続き知っておくと便利な正規表現の活用法についてご紹介します!
前号でご紹介した「知っておくとちょっと便利!正規表現の活用法1」もぜひご参照くださいね。
知っておくとちょっと便利な正規表現 ~リテラル文字編~
. や [ ] ( ) など、正規表現において文字列を制御するための文字をリテラル文字と言います。
このリテラル文字を、文字列として扱いたい場合は、文字の前に \ を付けます。
$ cat test5.txt 1 2 3 4 5 [1] [2] [3] [4] [5] $ grep [1] test5.txt // 1 が含まれる文字列を grep 1 [1] $ grep [\[1\]] test5.txt // [1] が含まれる文字列を grep [1]
その他にも、主なリテラル文字として下記のものがあります。
・(
・)
・[
・]
・{
・}
・^
・$
・!
・?
・.
・*
・+
・-
知っておくとちょっと便利な正規表現 ~論理式編~
正規表現における論理式は、様々な記号を用いて複数の条件を組み合わせることができるものになります。
- OR 条件
OR 条件は、複数の条件のうちいずれか一つに一致する場合に true (真) と判断します。
OR 条件を指定する場合は、複数の文字列の間に | を付けます。例えば、下記のように grep コマンドを指定した場合、テキストファイルから 3 もしくは 5 が含まれる行のみを表示します。
$ cat text1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ grep -P '(3|5)' text1 3 5 13 15
- NOT 条件
NOT 条件は、条件に一致しない場合に true (真) と判断します。
NOT 条件を指定する場合は、任意の文字列の前に ?! を付けます。例えば、下記のように grep コマンドを指定した場合、テキストファイルから 1 が含まれない行のみを表示します。
(例では ^ を付けているため、先頭に 1が含まれない行のみを表示するようにしています)$ cat text1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ grep -P '^(?!1)' text1 2 3 4 5 6 7 8 9
- AND 条件
AND 条件は、複数の条件すべてに一致する場合に true (真) と判断します。
ですが正規表現においては AND 条件を表すことができる文字がありません。
AND 条件を指定したい場合、bash の if 文を使用するなどの代替え策が必要となります。