2013-01-14 183 views
0

我有格式的字符串,字符串操作

/d.phpsoft_id=369242&url=http://f.1mobile.com/mobile_software/finance/com.mshift.android.achieva_2.apk 

,我需要使用正則表達式的結果字符串應該從http開始編輯這個字符串:即resultatnt字符串應該是

http://f.1mobile.com/mobile_software/finance/com.mshift.android.achieva_2.apk 

請幫助

回答

0
str = "/d.phpsoft_id=369242&url=http://f.1mobile.com/mobile_software/finance/com.mshift.android.achieva_2.apk" 

str.spl­it("url=")­[1] 
+0

這將打破,如果其他地方還有另外一個'url ='。 – arnab

+0

你會傳遞多個url參數?請定義要求。 – 99miles

1

對於這些類型的情況下,我寧願去與容易AV有助於提供解決方案的工具,或者至少可以指引我朝着正確的方向發展。我最喜歡的正則表達式是txt2re,因爲它會以許多語言輸出示例代碼,包括ruby。

通過解析器運行您的字符串並選擇httpurl進行匹配,它output後:

txt='/d.phpsoft_id=369242&url=http://f.1mobile.com/mobile_software/finance/com.mshift.android.achieva_2.apk' 

re1='.*?' # Non-greedy match on filler 
re2='((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))' # HTTP URL 1 

re=(re1+re2) 
m=Regexp.new(re,Regexp::IGNORECASE); 
if m.match(txt) 
    httpurl1=m.match(txt)[1]; 
    puts "("<<httpurl1<<")"<< "\n" 
end 
+0

如果參數中有多個url,該怎麼辦?你怎麼知道你想要第一場比賽? – 99miles

0

簡單的答案

你需要做以下

str = "/d.phpsoft_id=369242&url=http://f.1mobile.com/mobile_software/finance/com.mshift.android.achieva_2.apk" 

start=str.index('http://') 

resultant=str[start,str.length]