Issue #10891 has been updated by Shugo Maeda.

Assignee changed from ruby-core to Yui NARUSE

How about to interpret `[[:punct]]` as `[\p{P}\p{S}]` for unicode strings so that `[[:punct]]` will be a superset of POSIX's one?

----------------------------------------
Bug #10891: /[[:punct:]]/ POSIX group broken (with string literals?)
https://bugs.ruby-lang.org/issues/10891#change-55146

* Author: Tom Lord
* Status: Open
* Priority: Normal
* Assignee: Yui NARUSE
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
The regular expression: `/[[:punct:]]/` should match the following characters:

    ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

However, it only works for these characters:

    ! " # % & ' ( ) * , - . / : ; ? @ [ \\ ] _ { }

And does not work for these characters:

    $ + < = > ^ ` | ~

However, this is where it gets really weird... Consider the following:

    60.chr == "<" # true
    60.chr =~ /[[:punct:]]/ # => 0
    "<" =~ /[[:punct:]]/ # => nil

So, it seems that the regular expression only fails for string literals!



-- 
https://bugs.ruby-lang.org/