西山和広です。

On Sun, 04 Jun 2017 15:32:02 +0900,
俊(とし) wrote:
>
> コメントありがとうございます.確かに文字クラスの中では私の記法は意図したようには動かない気がします.とすると,文字ク\ラスの中に後方参照を入れ込むことはそもそもできないのでしょうか?

文字クラスは1文字にマッチするものなので、文字列にマッチする後方参照を
中に入れるのは無理だと思います。

最初の例だけ見直して、ちょっと考えてみたのですが、先読みを組み合わせて
(?!\2)\w のようなやり方でどうでしょうか。

>> /\A((\w)\2+)((?!\2)\w.*)\Z/.match("aaabcd")
=> #<MatchData "aaabcd" 1:"aaa" 2:"a" 3:"bcd">
>> /\A((\w)\2+)((?!\2)\w.*)\Z/.match("aaa bcd")
=> nil

> それから \Z の使い方ですが,私が出した例では \z のほうが適切と思いますが,一般的に
> IO からの入力では末尾に改行が入ったままになっていることもあるので,安全策として \Z にしているという程度の意味です.

なるほど。


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)