如何从ruby中的字符串中提取单词

时间:2015-11-16 04:05:55

标签: ruby substring

我想从ruby中的字符串中提取单词。

例如,我有一个网址字符串"......../default/d1235sf3/......"

我想从中提取"d1235sf3"。我在想使用正则表达式,但我不懂语法。谁能帮我?谢谢!

3 个答案:

答案 0 :(得分:2)

将string.match与regex一起使用并隔离组:

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之后,您可以使用ruby中的特殊变量$1来访问您想要的信息:

2.0.0-p643 :004 > $1
 => "d1235sf3" 
2.0.0-p643 :005 > info = $1
 => "d1235sf3" 
2.0.0-p643 :006 > info
 => "d1235sf3" 

答案 1 :(得分:0)

string = "......../default/d1235sf3/......"
string[%r{/default/([^/]*)/}, 1]
# => "d1235sf3"

Alfredo答案的一个简短替代方法 - 这种形式的正则表达式(string[regexp]string[regexp, group])非常适合提取字符串的特定部分;使用%r{...}代替/.../可以避免不得不逃避斜杠。

答案 2 :(得分:0)

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