我想使用正则表达式来挑选以_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。
答案 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匹配除换行符之外的每个字符。因此.*
将匹配一系列任意字符。