gpt4 book ai didi

regex - 正则表达式 MATLAB 中的 nul 字节

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:27 24 4
gpt4 key购买 nike

谁能解释一下 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 应该是 '.' 作为正则表达式通配符。

编辑2:

>> 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

最佳答案

这个错误可能已经修复了。我在几个版本的 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 =

[]

关于regex - 正则表达式 MATLAB 中的 nul 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com