0

Ahoさんの本を読んで正規表現を勉強しています。本書の次の 2 つのステートメントが理解できません。

質問 A:

1(0+1)*1 + 1 : denotes the set of all strings beginning and ending with a 1.

私の質問は、なぜ+1正規表現の最後に追加されるのですか? 1(0+1)*1十分ではありませんか?


また、以下の点で困っています。

質問 B:

以下のように、1 が 1 つしかない 0 と 1 のみを含む文字列のセット

    0*+0*10* 

0*+0*10*どのようにして解決策にたどり着いたのか、順を追って説明していただけますか?

4

3 に答える 3

3

質問aについて:1(0 + 1)* 1は、1で始まり1で終わる1文字の文字列1と一致しません。この例では、特殊なケースが必要です。

質問bについて:著者のために話すことはできません。ただし...最大で1を含む文字列は、1を持たないか、1を1つだけ持つ文字列です。アルファベットが{0,1}であるとすると、前者は0以上の0を含む文字列を意味します。は、0*です。後者は、同じ仮定で、0個以上の0、1個の1、0個またはmpre 0、つまり0 *10*を含む文字列を意味します。これらを組み合わせると、例が得られます。

于 2011-11-11T12:47:21.233 に答える
2

質問の場合::は、1で始まり、1で終わるすべての文字列のセットを示しますが、長さが1で、1で始まり1で終わる1(0+1)*1文字列は含まれていません。1

質問bの場合:最大で1つを含む文字列のセット1= A+Bここで、 Aはゼロを含む1すべて Bの文字列のセットであり、正確に1つを含むすべての文字列のセットです1

したがって、Aは0*であり、Bはです0*10* 。したがって、次のように答えが得られます。0* + 0*10*

于 2011-11-11T12:46:49.107 に答える
0

最初の例では、 + 1 で受け入れられ、残りでは受け入れられない文字列は です1。残りの式は 11 を処理できますが、最初と最後の文字が同じ文字列は処理できません。

2 番目の文字列についても同様の理由です。0* はすべてゼロの文字列を処理し、0*10* は 1 の文字列を処理します。

于 2011-11-11T12:51:00.290 に答える