rubylee 2008-4-17 16:39
正则表达式的问题
string#gsub(pattern){|match| block}
这是我在文档上看到的,可实际上 match不是MatchData对象 而是一个String
这样我如何找到正则表达式中的()内的内容了
比如[code]"azc13ddf429ssf777sse222xxf333".gsub(/f([\d+?])/){|match|
puts match[1]
}[/code]打印出所有f开头的数字 只打印数字
bbschat 2008-4-17 16:58
对了,你的正则是不是复杂了点? 貌似取一个数字 /f(\d)/ 多位数字 /f(\d+)/ 就够了。
[[i] 本帖最后由 bbschat 于 2008-4-17 17:00 编辑 [/i]]
黑马 2008-6-14 13:50
+? 是表示1个或多个之前的表达式 ,非贪婪模式
举个例子来说
"abb323".gsub(/(\d+)/)
--->323
"abb323".gsub(/(\d+?)/)
--->3
vintager 2008-7-3 11:29
回复 1# 的帖子
match="azc13ddf429ssf777sse222xxf333"=~/f(d+?)/中match才是MatchData对象
cjq_999 2008-8-2 18:38
str="azc13ddf429ssf777sse222xxf333"
str.gsub(/f\d+/){|match|
puts match.match(/\d+/)
}
cjq_999 2008-8-2 19:03
str="azc13ddf429ssf777sse222xxf333"
f=""
str.gsub(/f\d+/) { |match|
f=f+ match.match(/\d+/).to_s
}
puts f