我刚刚将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)
我没有发现我在评论的补丁说明中提到的这种变化.是否记录在任何地方?
正则表达式引擎已更改为Onigmo(基于Oniguruma),这可能会导致问题.
据我所知,你正确地声明了正则表达式.第二组括号不是必需的:
/[^[:space:]\d\-,\.]/
Run Code Online (Sandbox Code Playgroud)
该[:space:]声明仅是无效的一套内部,你会看到它出现[[:space:]],如果单独使用.在您的情况下,您还可以添加其他几个.
我不确定为什么\s在这种情况下不够用.
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |