MATLAB textscan之模式匹配用法详解
笔者在实际使用MATLAB的textscan函数去读取txt文档时,会需要跳过文档中某些字符串。使用模式匹配方法可以跳过或者寻找特定字符串。
给出一段字符串数组,例如:
test01 = '[Hello World!]';
首先进行读取匹配(%[…])。
读取’Hello’部分:
ans01 = textscan(test01,'%[Helo]');
ans02 = textscan(test01,'[%[loHe]');
ans03 = textscan(test01,'%[]Helo]');
ans04 = textscan(test01,'[%[**Helo**]');
得到
ans01{1,1} = {'[Hello'};
ans02{1,1} = {'Hello'};
ans03{1,1} = {'['};
ans04{1,1} = {'Hello'};
可以看到,在实际读取时,只有ans02和ans04达成目的。因此,在读取匹配时,%[***]中的星号无论个数,顺序,是否重复。只要包含需要读取的字符,即可读取到目标。
在有[]包括的内容时,需要将中括号左半边写在%前即可。
下面是排除匹配部分(%[^])
读取’Hello’部分:
ans01 = textscan(test01,'%[^World! ]');
ans02 = textscan(test01,'%[^ ]');
ans03 = textscan(test01,'[%[^ W]');
ans04 = textscan(test01,'[%[^*** W]');
得到
ans01{1,1} = {'[He'};
ans02{1,1} = {'Hello'}
{'World!]};
ans03{1,1} = {'Hello'};
ans04{1,1} = {'Hello'};
ans03和ans04成功了。在排除匹配时,中括号中的字符串开始均会被排除。