-1

我想使用正则表达式来挑选以 . 结尾的文件名_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。

4

2 回答 2

1

您需要在星号前加上句点以使其匹配:

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

用 Octave 3.2.4 确认

于 2012-11-17T22:54:35.557 回答
1

是正则表达式中的*一个特殊字符,一个量词。此字符使前面的字符/组匹配 0 次或多次。所以这个量词需要重复一些东西,但在你的表达中什么都没有。

我认为您的意思是regexp( 'asdfg_x.txt', '.*_x.txt' ),其中.另一个正则表达式特殊字符,匹配除换行符以外的每个字符。所以.*会匹配一系列任意字符。

于 2012-11-17T23:14:22.290 回答