打印

[一般问题] 正则表达式的问题

正则表达式的问题

string#gsub(pattern){|match| block}

这是我在文档上看到的,可实际上 match不是MatchData对象 而是一个String

这样我如何找到正则表达式中的()内的内容了

比如

"azc13ddf429ssf777sse222xxf333".gsub(/f([\d+?])/){|match|
puts match[1]
}


打印出所有f开头的数字 只打印数字
本帖最近评分记录
  • drive2me R币 +5 原创内容 2008-6-14 14:12
埋头做事 低头做人

TOP

$1
本帖最近评分记录
  • rubylee R币 +3 都是自己看见英文文档就不愿意读的后果 仔细 ... 2008-4-17 16:53

TOP

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

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

TOP

嗯 是啊 后面的?是尽量少匹配的意思 呵呵
埋头做事 低头做人

TOP

+? 是表示1个或多个之前的表达式 ,非贪婪模式
举个例子来说
"abb323".gsub(/(\d+)/)
--->323
"abb323".gsub(/(\d+?)/)
--->3
本帖最近评分记录
  • drive2me R币 +3 thanks 2008-6-14 14:13

TOP

回复 1# 的帖子

match="azc13ddf429ssf777sse222xxf333"=~/f(d+?)/中match才是MatchData对象

TOP

str="azc13ddf429ssf777sse222xxf333"
str.gsub(/f\d+/){|match|
  puts match.match(/\d+/)
}
态度决定一切!

TOP

str="azc13ddf429ssf777sse222xxf333"
f=""
str.gsub(/f\d+/) { |match|
  f=f+ match.match(/\d+/).to_s
}
puts f
态度决定一切!

TOP

2008-08-29 11:09 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.60