2014-04-01 15 views
2

鉴于这些字符串:如何在Matlab中编写正则表达式来选择部分字符串?

var-nvar-ar var-nvar-br var-int-ar var-int-br oth-nvar-ar oth-nvar-br oth-int-ar oth-int-br 

我想编写一个选择所有包含我的子,如果子是字符串正则表达式:

字符串的开头和 -

之间或

之间--

-和字符串的结尾

所以,如果substring = 'var'之间

那么正则表达式将选择

var-nvar-ar var-nvar-br var-int-ar var-int-br 

我想:

strings = {'var-nvar-ar' 'var-nvar-br' 'var-int-ar' 'var-int-br' 'oth-nvar-ar' 'oth-nvar-br' 'oth-int-ar' 'oth-int-br'} 

regexp(strings,'[^|(*?-)]var[(-.*)|$]','match') 

但结果却是不我想到的是什么。

回答

1

要使用或运算(|),又称alternation,它需要一个子表达式()而非character set[]的内部。相反的,

regexp(strings,'[^|(*?-)]var[(-.*)|$]','match') 

使用

regexp(strings,'(^|(*?-))var((-.*)|$)','match','once') 
+0

谢谢chappjc! – HappyPy

相关问题