2015-11-16 77 views
-3

我想從ruby中的字符串中提取單詞。如何從ruby中的字符串中提取單詞

例如,我有一個url字符串"......../default/d1235sf3/......"

我想從中提取"d1235sf3"。我在想使用正則表達式,但我不知道語法。誰能幫我?謝謝!

+1

什麼是你的「單詞」?你是否也想在這裏提取''default''?什麼是確切的規則? http://www.regular-expressions.info/是一個很好的正則表達式教程,學習它們會給你很大的力量 - 不會總是有人爲你製作表情。這就是說,當你嘗試某些東西*時,歡迎您發佈有關*問題*的問題*。 – Amadan

+0

在這種情況下,我想提取字符串「d1235sf3」。它以「default /」開頭並以「/」結尾。我不想提取「默認」。 – cowling

+0

「d1235sf3」屬於哪個語言,(它是什麼意思)?它不應該是英語,因爲英語確實有'default'這個詞,但是你有一種語言不能識別這個單詞。 – sawa

回答

2

用正則表達式使用string.match和隔離組:

string = "http://test.com/something/default/d1235sf3/" 
string.match("^.*\/default\/(.*)\/") 

注意我是如何構建我正則表達式,隔離你有興趣與()的一部分。

注:正則表達式(正則表達式)是一個巨大的,奇妙的和有趣的主題,當你必須將文本「匹配」到某個「模子」時,這將幫助你處理這種情況,但我真的不能進去深入這裏。本教程的網站看起來還不錯,所以你應該得到關於如何使用正則表達式在這裏複習:http://regexone.com/

string.match將產生相應的匹配組屬性的MatchData對象:

=> #<MatchData "http://test.com/something/default/d1235sf3/" 1:"d1235sf3"> 

注意如何屬性1有你想要的一點信息。調用string.match之後,你可以使用特殊的變量$1在紅寶石訪問所需的信息:

2.0.0-p643 :004 > $1 
=> "d1235sf3" 
2.0.0-p643 :005 > info = $1 
=> "d1235sf3" 
2.0.0-p643 :006 > info 
=> "d1235sf3" 
0
string = "......../default/d1235sf3/......" 
string[%r{/default/([^/]*)/}, 1] 
# => "d1235sf3" 

短替代阿爾弗雷多的答案 - 這種形式的正則表達式(string[regexp]string[regexp, group])的是好適用於提取字符串的特定部分;使用%r{...}而不是/.../是很好的避免必須逃脫斜線。

0
> string = "......../default/d1235sf3/......" 
> string.split('/default/').last.split('/')[0] 
#=> "d1235sf3" 
相關問題