正则表达式在Ruby 2中略有不同?

Dan*_*ton 4 ruby regex posix

我刚刚将Ruby 1.9.3中的一个小宝石移植到了漂亮的新Ruby 2.0.0上.我必须做的唯一改变是正则表达式.

在1.9.3下,以下正则表达式将匹配包含除数字,数字相关标点符号和空格(包括非中断空格)之外的字符的任何字符串.

/[^[[:space:]]\d\-,\.]/
Run Code Online (Sandbox Code Playgroud)

在2.0.0下,我不得不将Posix空间类从Negation类的开头移开.

/[^\d\-,\.[[:space:]]]/
Run Code Online (Sandbox Code Playgroud)

我没有发现我在评论的补丁说明中提到的这种变化.是否记录在任何地方?

tad*_*man 8

正则表达式引擎已更改为Onigmo(基于Oniguruma),这可能会导致问题.

据我所知,你正确地声明了正则表达式.第二组括号不是必需的:

/[^[:space:]\d\-,\.]/
Run Code Online (Sandbox Code Playgroud)

[:space:]声明仅是无效的一套内部,你会看到它出现[[:space:]],如果单独使用.在您的情况下,您还可以添加其他几个.

我不确定为什么\s在这种情况下不够用.