2016-03-20 28 views
0

我想使用正則表達式匹配兩個字符串,但函數僅在字符串中沒有圓括號時才返回值。MATLAB中的正則表達式不會讀取圓括號以匹配

如:

regexp('Amidation(N)','Amidation(N)') 
returns 

0 

regexp('Amidation()','Amidation()') 
returns 
1 

而且它匹配了:

regexp('Amidation-','Amidation-') 
returns 1 

我試着用的strcmp,但並不在一個字符串讀取多個參數。

如:

strcmp('Amidation;Acetylation (E);Phosphorylation','Acetylation (E)') 
returns 0 

strcmp('Amidation (E)','Amidation (E)') 
returns 1. 

我需要像一個函數:

match_function('Amidation (E)','Amidation (G)') 
returns 0 

match_function('Amidation (E)','Amidation (E)') 
returns 1 

請讓我知道我應該使用哪個函數

回答

2

如果你想匹配括號,因爲它們是a regex symbol for performing grouping,所以你需要用反斜槓(\)來避開括號。

regexp('Amidation(N)','Amidation\(N\)') 

如果你想與regexp匹配文本字符串,請考慮使用regexptranslate能逃避所有的特殊字符爲您服務。

escaped_pattern = regexptranslate('escape', 'Amidation(N)'); 
regexp('Amidation(N)', escaped_pattern) 
+1

好主意使用'regexptranslate'爲逃避! –