我正在使用MATLAB的regexp()
,我正在尝试找到一个正则表达式,它只匹配包含Cyto
但不包含CytoBlue
的文件名。我的问题是文件名看起来像Texture_Variance_Cyto_4_90
和Texture_Variance_CytoBlue_4_90
,或HIST_9BinsHistBin7_Cyto
和HIST_9BinsHistBin7_CytoBlue
。
如果我只是尝试匹配Cyto
,我还会捕获包含CytoBlue
的所有文件。如果我尝试匹配Cyto_
,我会错过Cyto
是最后一个元素的文件名。我想我需要一些说“匹配_或字符串结尾”的东西。我尝试了Cyto[_\Z]
但这不起作用,我再次错过以Cyto
结尾的所有元素。
答案 0 :(得分:1)
Cyto(?=$|_)
匹配Cyto
,后跟("(?=...)"
)字符串的结尾("$"
)或_
。请注意,下划线不会作为匹配的一部分返回。
答案 1 :(得分:0)
使用此正则表达式:Cyto(_.*?(?= ))?\b
答案 2 :(得分:0)
MATLAB支持正面和负面的前瞻,所以这应该有效:
Cytp(?!Blue)
...意思是“Cyto”后面没有“Blue”。