[vim]正規表現の演習

:set wrapscan 折り返し検索を有効にする
:set ignorecase 大文字と小文字の区別をしない
:set smartcase 検索文字列に1字でも大文字が含まれていたら、大文字と小文字を区別する
(ignorecaseがオンの時)
:set magic 正規表現に使われる記号を有効にする
(:set nomagicだと、「*」は文字“*”にマッチする。「¥*」で繰り返し。)

1.A* 0個以上連続したAに一致 , A, AA, AAA, …

2.A¥+ 1個以上連続したAに一致 A, AA, AAA, …

3.A. Aのに何れかの1文字がある場合に一致,改行文字は除く AB, A1, A.

4.AB¥?C AとCの間にBがないか,Bがある場合に一致 AC, ABC,AEC

5.A¥{3¥} 3個のAに一致 AAA

6.A¥{2,4} 2個以上,4個以内のAに一致 AA, AAA, AAAA

7.[a-z]+ a〜zの何れか,つまりアルファベット小文字を表す value, ascii

8.¥w¥+ 1個以上の英数文字に一致 abc, a001, 001

9.¥d+ 1個以上の数字に一致 1, 12, 123, 001

10.¥| 選択 AA¥|BB¥|CC AAまたはBBまたはCCに一致

11.¥(¥) グループ化 A¥(01¥|02¥|03¥) A01またはA02またはA03に一致

12.^ 行の最初 ^A 行頭のAに一致

13.$ 行の最後 A$ 行末のAに一致

14.[^A] A以外の文字 [^ABC]+ DEFなど1つ以上のABC以外の文字に一致

15.¥s 空白,タブ ¥s+ 1つ以上の空白に一致

16.¥S 空白文字以外 ¥S+ 1つ以上の空白以外の文字に一致

17.¥d 数値文字 ¥d+ 123など1つ以上の数字に一致

18.¥D ¥d以外 ¥D+ ABCなど1つ以上の数字以外の文字に一致

19.¥w 英数文字かアンダーバー ¥w+ ABC123など1つ以上の英数文字かアンダーバーに一致
20.¥W ¥w以外の文字 ¥W+ -+!?など1つ以上の英数文字かアンダーバー以外(記号)に一致

21.¥b 単語の境界(¥wと¥Wの境界) ABC¥bDEF ABCとDEFの間に英数文字かアンダーバー以外の文字がある文字列に一致

22.[CF+LF]の場合:¥r¥n [LF]のみ:¥n
全ての改行を指定:(¥r¥n|¥n¥r|¥n|¥r)

23.空白行
/^$/

[演習用]
1.1個以上のA
A, B, C, AA, AAA, AAAA, EEEE

2.Aの後に1個の文字
AB, ABC, A , BAC

3.AB¥?C AとCの間にBがないか,Bがある場合に一致
AC, ABC,AEC

4.3個のAに一致
AAA,AA,A,AAAA,ABC,AABB, BAAAC

5.2個以上,4個以内のAに一致
AA, AAA, AAAA ,AABBCC,AAAAB, BAAAA, ABABA,AAAAA

7.アルファベット小文字を表す
value, ascii

8.1個以上の英数文字に一致
abc, a001, 001

9.1個以上の数字に一致
1, 12, 123, 001

10.AAまたはBBまたはCCに一致
AA BB CC DD EE AABB CCDD ABBC ABCC

11.A01またはA02またはA03に一致
A01 A02 A03 A04 A05 BCA01AB ZZA02XX

12. 行の最初 ^A 行頭のAに一致
A
A
ABC

13.行の最後 A$ 行末のAに一致
ABC
ABCA
A
ZYZ A
abc A

14. 1つ以上のABC以外の文字に一致
ABC ACB XYZ DEF ACB

15.1つ以上の空白に一致
A A A A A A

16.1つ以上の空白以外の文字に一致
A B C D E F

17.空行を検索する(1行空いている行)
aaaaa

bbbbb

18.日付を検索する
2005/09/30
2005/111/1
(よくある日付の書式)