2011-08-30 76 views

回答

8

String#[]方法就是你需要:

str = '/Users/patelc75/Documents/code/haloror/dialup/H200000787_1313406125/H200000787_1313389058_1.xml' 

puts str[/H\d{9}/]  #=> H200000787 
+0

好吧,我放弃了。这是如何运作的?如果它是'str =〜/ H \ d {9} /',它只会返回一个整数。是什么使括号中的特殊字符变成了'$&'? – tchrist

+0

@tchrist'String#=〜'返回第一个匹配的位置(如果有的话)或nil,并且用该匹配的内容填充变量'$&'。带正则表达式的String#[]'只是返回匹配内容。 –

+0

是的,但为什么?括号只需要一个整数。为什么这场比赛在他们身上会有不同的表现,并且知道在那里使用那串? – tchrist

2
irb(main):001:0> s = "/Users/patelc75/Documents/code/haloror/dialup/H200000787_1313406125/H200000787_1313389058_1.xml" 
=> "/Users/patelc75/Documents/code/haloror/dialup/H200000787_1313406125/H200000787_1313389058_1.xml" 
irb(main):002:0> s =~ /H\d{9}/ 
=> 46 
irb(main):003:0> $& 
=> "H200000787" 
相关问题