正则表达式中的nul字节MATLAB

前端之家收集整理的这篇文章主要介绍了正则表达式中的nul字节MATLAB前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以用正则表达式解释什么MATLAB正在使用nul字节(x00)吗?

例子:

>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
      1  % current
      4  % expected

>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10]))
ans =
      4  % current
      4  % expected

>> regexp(char([0 0 0 1 0 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
      [] % current
      [] % expected

>> regexp(char([0 0 0 0 10 0 0 1 0 0 10 0 0 0]),char([0 0 0 0 46 0 0 10]))
ans =
      1  % current
      [] % expected

>> regexp(char([0 0 0 0 0 0 0 1 0 0 10 0 0 0]),char([1 0 0 0 46 0 0 10]))
ans =
      [] % current
      [] % expected

答案可能只是,MATLAB正则表达式并不意味着处理不可打印的字符,但是如果是这样的话,我会假设它会出错。

编辑:46被预计是”。如正则表达式通配符。

EDIT2:

>> regexp(char([0 0 0 0 50 0 0 100 0 0 90 0 0 0]),char([0 0 46 0 0 90]))
ans =
     1    9

我意识到这可能是10是一个特殊的字符,所以这个只有可打印和nul字节。我希望这个只能匹配9,因为第五个字符50不匹配0。

这个bug可能已经修复了。我从Matlab Central测试了几个版本的例子:

在R2013b:

>> regexp(char([0 0 1 0  41 41 41 41 41 41]),char([0 '.' 0  40 40 40 40]))    
ans =

     2

在R2015a:

>> regexp(char([0 0 1 0  41 41 41 41 41 41]),char([0 '.' 0  40 40 40 40]))   
ans =  

     2

在R2016a:

>> regexp(char([0 0 1 0  41 41 41 41 41 41]),char([0 '.' 0  40 40 40 40]))
ans = 

     []

猜你在找的正则表达式相关文章