Techioz Blog

複数行の正規表現が Ruby で機能しない

概要

Ruby で正規表現を書きましたが、これは 1 行で正常に動作しましたが、非常に大きいため、複数行の形式で記述する必要があります。

複数行で使用するために %r{}x 形式を使用していますが、機能しません。

regex = (/\A(RM|R1)([A-Z])([A-Z])(\d+)(\d\d+)([A-Z])([A-Z])([A-Z]+)-?(\d+)([A-Z])(\d)#?([A-Z])([A-Z])(\d)\z/)

一行で

regex = %r{
        ([A-Z])
        ([A-Z])
        ([A-Z])
        (\d+)
        (\d\d+)
        ([A-Z])
        ([A-Z])
        ([A-Z]+)
        -?
        (\d+)
        ([A-Z])
        (\d)
        #?
        ([A-Z])
        ([A-Z])
        (\d)
     }x

複数行(各行に 1 つのグループ)

私のアプローチの何が間違っているのでしょうか?

解決策

フリースペースモードの場合と同様に # 記号をエスケープする必要があります。これはコメントの開始を示します。

では、# を置き換えますか?と #?。