以上である必要があります。「a {m、n} =少なくともmですがn a以下」の場合、コードがtrueを返すのはなぜですか?Perlの正規表現は少なくとも一致しますが、
my $seq= "xxxx";
print "bingo!" if ($seq =~ /x{2,3}/);
n = 3で、文字列に4 x? nに関して、/a{m,n}/
の定義に問題があると思います。結局のところ、ポイントは文字列に最大3 xがあることを確認することでした...または? 誰かが説明できますか? 私はそれがうまく動作しない場合の出現の最大値を指定しなければならないという論理を求めています。私は最大3と一致したいと意味し、文字列は4を意味する。私はTRUEになり、最大値は3と仮定します。実際には4です。 ありがとう。
この3つの回答のうち、私の質問に対する答えは表示されません。指定しなければならない論理それがうまく動作しないときの出現の最大値。私は最大3と一致したいと意味し、文字列は4を意味する。私はTRUEになり、最大は3と仮定します。実際には4です。 – Megiddo
あなたは完全な文字列と一致していません。 '/^x {2,3} $ /'は真となり、 '/^x {2,4} $ /'は真となります。 '/ x {2,3} /'がマッチすると '/^x {2,3} y /'は最後にyを加えたとしても、 – bytepusher
文字列の最初の2文字は 'x'文字であるため、正規表現は一致します。つまり、文字列内に2または3 'xが続く1つ以上の点があります。文字列のそのポイントの後ろにさらに 'x'が続くという事実は、あなたの正規表現によって禁止されていません。 –