字符速记的实现特性

  • 本文关键字:实现 字符 regex erlang
  • 更新时间 :
  • 英文 :


我想知道为什么在正则表达式库re中的Erlang中,字符缩写s只选择空白(32ASCII字符(,而不是[ \t\n\r]正则表达式的等价物。

同时;反模式";对于s-S(非空格字符缩写(实现了可预测的行为。

测试实验室
  • s的EUnit测试
  • [ \t\n\r]的EUnit测试
  • CCD_ 8的EUnit测试

我仍然在重新库的文档中找到了问题的答案。

为了与Perl兼容,\s不用于匹配VT字符(代码11(;空间";班然而,Perl在5.18版本中添加了VT,PCRE在版本8.34。默认字符现在是HT(9(、LF(10(、VT(11( 、FF(12(、CR(13(和空格(32(,它们被定义为白色在";C";场所如果特定于区域设置,此列表可能会有所不同匹配正在进行。例如,在某些地区"不间断空间";字符(\xA0(被识别为空白,而在其他情况下VT字符不是。

由此,我得出结论,预期的工作是可能的,所以只有当有一个设置的区域设置值-";C";。

现在我明白了为什么一切都是这样工作的——它是由开发人员构思的,也就是说,我们在Erlang中实现正则表达式时需要考虑这个特性。

为了克服实现限制(与需要考虑区域设置值有关(,我实现了一个项目,以便能够使正则表达式文本适应我的软件的可用功能(我的操作系统没有所需的区域设置参数集,但我想继续使用它(。

这是一个助手库re_tuner。

最新更新