大なり記号は、句読点カテゴリではなく、"Symbol, Math" categoryにあります。あなたの場合は
2.1.2 :004 > /[[:punct:]]/u =~ '<'
=> nil
2.1.2 :005 > /[[:punct:]]/ =~ '<'
=> 0
:(私のデフォルトのソースは何か他のものである一方、ソースのエンコーディングにはデフォルトを、そしておそらくあなたのソースは、UTF-8でエンコードされている)あなたはUTF-8に正規表現のエンコーディングを強制する場合は、これを見ることができます正規表現をASCIIエンコーディング(/ n - more options here)にすると、 '<'がpunctに分類されていることがわかります。これはあなたが望むものだと思います。しかし、ソースにUTF-8のASCIIサブセット以外の文字が含まれていると、これはおそらく問題を引き起こします。
2.1.2 :012 > /\p{S}/u =~ '<'
=> 0
があります:
2.1.2 :009 > /[[:punct:]]/n =~ '<'
=> 0
よりよい解決策は、UTF-8エンコーディングで「<」にマッチした、1「PUNCT」のではなく、代わりに正規表現で「シンボル」のカテゴリを使用することですカテゴリの長いリストhere。
glibcのドキュメントでは、 '[[:punct:]]'は 'wctype(3)'が句読点を呼び出すものと一致する必要があります。 'ispunct(3)'のページに ''スペースか英数字ではない印字可能な文字があるかどうかを調べます。それはかなり明白なようです。 – sarnold
[RubyのREエンジンは特別ですが](http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt) - Unicodeの場合とUnicodeでない場合の両方のドキュメントがあります。 punctクラス。私はまだこれが何を意味しているのかはっきりしていませんが、これが助けてくれることを望みます。 – sarnold