查看完整版本: 正则表达式的问题

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:46

$1

bbschat 2008-4-17 16:58

对了,你的正则是不是复杂了点? 貌似取一个数字 /f(\d)/ 多位数字 /f(\d+)/ 就够了。

[[i] 本帖最后由 bbschat 于 2008-4-17 17:00 编辑 [/i]]

rubylee 2008-4-18 16:35

嗯 是啊 后面的?是尽量少匹配的意思  呵呵

黑马 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
页: [1]
查看完整版本: 正则表达式的问题