2

文字列が常に 1 で始まり、偶数の 0 を持つ正規言語の正規表現を作成する必要があります。

私はすでに Java で ^1+(00)+(1|00)* を試しましたが、100、100100、10011001 などの文字列を受け入れますが、0 の数が偶数の場合は 10101010 を受け入れません。正規表現を定義するためのより良いアイデアを持っている人はいますか?

4

2 に答える 2

5

これを試して:

"^1+(01*01*)*$" 

あなたが試した正規表現に基づいて、0と1のみが許可されていると想定しています。他の文字を許可する場合:

"^1[^0]*(0[^0]*0[^0]*)*$"
于 2013-11-06T17:00:25.773 に答える
3

I need to write a regular expression for a regular language which its strings always start with 1 and have even number of 0s.

この先読みベースの正規表現はあなたのために働くはずです:

/^1(?=(([^0]*0){2})*[^0]*$)/

/^1(?=(([^0]*0){2})*[^0]*$)/.test('10'); // false
/^1(?=(([^0]*0){2})*[^0]*$)/.test('1000000'); // true
/^1(?=(([^0]*0){2})*[^0]*$)/.test('000000'); // false
于 2013-11-06T17:00:30.630 に答える