我想从ruby中的字符串中提取单词。
例如,我有一个网址字符串"......../default/d1235sf3/......"
。
我想从中提取"d1235sf3"
。我在想使用正则表达式,但我不懂语法。谁能帮我?谢谢!
答案 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"