2012-08-04 131 views
2

我正在使用MATLAB的正则表达式(),我试图找到一个正则表达式,它只匹配包含Cyto但不包含CytoBlue的文件名。我的问题是,文件名看起来要么喜欢Texture_Variance_Cyto_4_90Texture_Variance_CytoBlue_4_90,或HIST_9BinsHistBin7_CytoHIST_9BinsHistBin7_CytoBlue正则表达式匹配_或字符串末尾

如果我只是尽力配合Cyto,我也捕捉到所有包含CytoBlue文件。如果我尝试匹配Cyto_,我错过了文件名,其中Cyto是最后一个元素 。我想我会需要一些说“匹配_或字符串的结尾”。我想Cyto[_\Z]但不工作,我再错过所有以Cyto结束元素。

回答

0

使用此正则表达式:Cyto(_.*?(?=))?\b

+1

根据该文件,MATLAB使用'\ <' and '\>'word边界,而不是'\ B'。 – 2012-08-04 17:58:22

1
Cyto(?=$|_) 

这个匹配Cyto,随后("(?=...)")将字符串("$")或_的末尾。请注意,下划线不会作为匹配的一部分返回。

0

MATLAB支持正面和负面的向前看符号,所以这应该工作:

Cytp(?!Blue) 

...意为 “的Cyto” 后面没有 “蓝”。

相关问题