文字を含む文字列(簡略化のために 'a')をn回、最後にnを含む文字列と一致するルビ正規表現パターンが必要です。動的に決定された繰り返し回数に一致する正規表現が必要です
例えば、それは「AAA3」、「aaaa4」などではなく、「A2」または「AAA1」に一致する必要がありますが、その他
文字を含む文字列(簡略化のために 'a')をn回、最後にnを含む文字列と一致するルビ正規表現パターンが必要です。動的に決定された繰り返し回数に一致する正規表現が必要です
例えば、それは「AAA3」、「aaaa4」などではなく、「A2」または「AAA1」に一致する必要がありますが、その他
それが正規言語ではないので、正規表現は不可能であること(つまりは簡単ですPumping Lemma for Regular Languagesと証明する)。私は本当の正規表現よりもルビ正規表現がどれほど強力であるかは分かりませんが、これは十分強力です。すべての有限lanugagesが規則的であるが、文字が表示された回数をカウントして、解析する文字列操作を使用して非常に簡単だろうので
a1|aa2|aaa3|aaaa4|aaaaa5||aaaaaa6||aaaaaaa7||aaaaaaaa8||aaaaaaaaa9
:あなたは次のようにそれと状態の各可能性は有限の制限を設定することができますその文字の最後の文字列の直後の文字列の整数。
を私は目が覚めたので、塩の粒でこれを取るが、代わりに、単一の正規表現でそれを行うので、それを行うための簡単な方法は、
def f(s)
s =~ /(a+)(\d)/
$1.size == $2.to_i
end #=> nil
f 'aaa3' #=> true
f 'aa3' #=> false
だろう
@all:私は複数の行で行うことを知っています、私は同じ単一の正規表現で可能かどうかを考えていました。 – n00b