2011-09-28 129 views
0
中存在一個字符串

我已經得到了我使用從另一個字符串中去除的延伸檢查另一個字符串與正則表達式

本例中的擴展是一個正則表達式

 
BK|BZ|113 

如果該字符串不包含任何擴展名,那麼我需要它將字符串保持原樣。

我使用正則表達式是

 
base_value = base_string[/(.*?[^-])-?(?:BK|BZ|113)/,1] 

但是,如果BASE_VALUE不包含字符串,我想要回BASE_VALUE。我以爲我可以使用

 
base_value = base_string 
base_value = base_string[/(.*?[^-])-?(?:BK|BZ|113)/,1] unless (base_value !~ /(.*?[^-])-?(?:BK|BZ|113)) == false 

但這是行不通的。

如果找不到擴展名,返回base_string的最佳方法是什麼?

+3

你可以舉一些例子輸入? –

回答

2

如果我理解的很好,你想從字符串中去掉正則表達式,如果它匹配的話,對嗎?所以..做到這一點:

string.sub(/(?:BK|BZ|113)$/, "") 
+0

你的方法比我的更好,我想我被卡在他寫的東西上了! – derp

0

也許你可以使用子這樣的:

base_string1 = "test1BK" 
base_string2 = "test2" 

p base_string1.sub(/(.*?[^-])-?(?:BK|BZ|113)/,'\1') 
p base_string2.sub(/(.*?[^-])-?(?:BK|BZ|113)/,'\1') 

圖案時,沒有發現任何被更換,否則返回字符串不帶擴展名。

0

如果/(.*?[^-])-?(?:BK|BZ|113)/不匹配,那麼base_string[/(.*?[^-])-?(?:BK|BZ|113)/,1]將是nil。所以這應該工作:

base_value = base_string[/(.*?[^-])-?(?:BK|BZ|113)/,1] || base_string 
相關問題