正则表达式匹配_或字符串结尾

时间:2012-08-04 16:34:44

标签: regex matlab match

我正在使用MATLAB的regexp(),我正在尝试找到一个正则表达式,它只匹配包含Cyto但不包含CytoBlue的文件名。我的问题是文件名看起来像Texture_Variance_Cyto_4_90Texture_Variance_CytoBlue_4_90,或HIST_9BinsHistBin7_CytoHIST_9BinsHistBin7_CytoBlue

如果我只是尝试匹配Cyto,我还会捕获包含CytoBlue的所有文件。如果我尝试匹配Cyto_,我会错过Cyto是最后一个元素的文件名。我想我需要一些说“匹配_或字符串结尾”的东西。我尝试了Cyto[_\Z]但这不起作用,我再次错过以Cyto结尾的所有元素。

3 个答案:

答案 0 :(得分:1)

Cyto(?=$|_)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

MATLAB支持正面和负面的前瞻,所以这应该有效:

Cytp(?!Blue)

...意思是“Cyto”后面没有“Blue”。