2011-08-20 5 views

答えて

3

それが正規言語ではないので、正規表現は不可能であること(つまりは簡単ですPumping Lemma for Regular Languagesと証明する)。私は本当の正規表現よりもルビ正規表現がどれほど強力であるかは分かりませんが、これは十分強力です。すべての有限lanugagesが規則的であるが、文字が表示された回数をカウントして、解析する文字列操作を使用して非常に簡単だろうので

a1|aa2|aaa3|aaaa4|aaaaa5||aaaaaa6||aaaaaaa7||aaaaaaaa8||aaaaaaaaa9 

:あなたは次のようにそれと状態の各可能性は有限の制限を設定することができますその文字の最後の文字列の直後の文字列の整数。

3

私はPerlで実行できますが、Rubyでは実行できません。

/^(a+)(??{length($1)})$/ 

楽しいですか?

はそれをチェックアウト:http://ideone.com/ShB6C

1

を私は目が覚めたので、塩の粒でこれを取るが、代わりに、単一の正規表現でそれを行うので、それを行うための簡単な方法は、

def f(s) 
    s =~ /(a+)(\d)/ 
    $1.size == $2.to_i 
end #=> nil 
f 'aaa3' #=> true 
f 'aa3' #=> false 
だろう
+0

@all:私は複数の行で行うことを知っています、私は同じ単一の正規表現で可能かどうかを考えていました。 – n00b

関連する問題