次の文字列のうち、正規表現 (a*(ab)*|c)*ad* で表すものとして、最も不適切なものはどれか。ただし、記号 * は直前の要素の0回以上の繰り返しを、記号 | は選択を表すものとする。
@ aaccaadd
A aabcabad
B acababadd
C abacadad
D aaacaaabaaad
C
(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* で表現できる。
A aabcabadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で表現できる。
B acababaddは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で表現できる。
C 不適切である。abacadadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で、最後のadを表現できない。問題の正規表現では、dの後にd以外の文字を表すことができない。
D aaacaaabaaadは、(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c)(a*(ab)*|c) ad* で表現できる。
| V−4 | 目次 | V−6 |