MATLAB中的正则表达式奇怪

时间:2012-11-17 22:49:03

标签: regex matlab

我想使用正则表达式来挑选以_x.txt结尾的文件名。我认为我可以使用正则表达式*_x.txt,但MATLAB是顽固的。

>> regexp( 'asdfg_x.txt', '*_x.txt' )
ans =
     []
>> regexp( 'asdfg_x.txt', '_x.txt' )
ans =
     6

为什么'* _x.txt'不起作用?我意识到它不是我想要完成的最好的正则表达式,但它应该工作。我知道我已经在Linux中完成了这项工作并且已经完成了。我目前正在使用Windows 7,MATLAB 2009b。

2 个答案:

答案 0 :(得分:1)

您需要在星号前加一段时间使其匹配:

regexp( 'asdfg_x.txt', '.*_x.txt' )

用Octave 3.2.4确认

答案 1 :(得分:1)

*special character in regex, a quantifier。该字符使前面的字符/组匹配0次或更多次。所以这个量词需要重复一些东西,但在你的表达中没有什么。

我认为你的意思是regexp( 'asdfg_x.txt', '.*_x.txt' ),其中the . is another regex special character匹配除换行符之外的每个字符。因此.*将匹配一系列任意字符。