次の文字列のうち、正規表現 (a*(ab)*|c) *ad* で表すものと
して、最も不適切なものはどれか。ただし、 記号 * は直前の要素の
0回以上の繰り返しを、 記号|は選択を表すものとする。
@ aaccaadd
A aabcabad
B acababadd
C abacadad
D aaacaaabaaad
(a*(ab)*|c) * は、 (a*(ab)*|c) (a*(ab)*|c) (a*(ab)*|c) ・・・
と同じことであるため、これを踏まえる。
@aaccaaddは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で
表現できる。
Aaabcabadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で表現できる。
Bacababaddは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で表現できる。
Cabacadadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で、最後のadを
表現できない。
問題の正規表現では、dの後にd以外の文字を表すことができない。
Daaacaaabaaadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で
表現できる。
EXCELのマクロのご相談なら ファーストマクロ へ
タグ:正規表現