我想從ruby中的字符串中提取單詞。如何從ruby中的字符串中提取單詞
例如,我有一個url字符串"......../default/d1235sf3/......"
。
我想從中提取"d1235sf3"
。我在想使用正則表達式,但我不知道語法。誰能幫我?謝謝!
我想從ruby中的字符串中提取單詞。如何從ruby中的字符串中提取單詞
例如,我有一個url字符串"......../default/d1235sf3/......"
。
我想從中提取"d1235sf3"
。我在想使用正則表達式,但我不知道語法。誰能幫我?謝謝!
用正則表達式使用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"
string = "......../default/d1235sf3/......"
string[%r{/default/([^/]*)/}, 1]
# => "d1235sf3"
短替代阿爾弗雷多的答案 - 這種形式的正則表達式(string[regexp]
或string[regexp, group]
)的是好適用於提取字符串的特定部分;使用%r{...}
而不是/.../
是很好的避免必須逃脫斜線。
> string = "......../default/d1235sf3/......"
> string.split('/default/').last.split('/')[0]
#=> "d1235sf3"
什麼是你的「單詞」?你是否也想在這裏提取''default''?什麼是確切的規則? http://www.regular-expressions.info/是一個很好的正則表達式教程,學習它們會給你很大的力量 - 不會總是有人爲你製作表情。這就是說,當你嘗試某些東西*時,歡迎您發佈有關*問題*的問題*。 – Amadan
在這種情況下,我想提取字符串「d1235sf3」。它以「default /」開頭並以「/」結尾。我不想提取「默認」。 – cowling
「d1235sf3」屬於哪個語言,(它是什麼意思)?它不應該是英語,因爲英語確實有'default'這個詞,但是你有一種語言不能識別這個單詞。 – sawa