本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成30年度 技術士第一次試験問題【専門科目】

V−5

次の文字列のうち、正規表現 (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* で表現できる。
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*
 表現できる。

V−4 目次 V−6