yakczh 发表于 2011-02-12 16:16

ruby 正则没有全局匹配选项吗? 只有i和m

page=~/<script.*?<\/script>/im

这种一次只能匹配出一个script块
象 perl =~/<script.*?<\/script>/gi 可以匹配出所有的script

yakczh 发表于 2011-02-12 16:38

code.scan(/<script.*?<\/script>/mi).each{ |script|
puts script
}


这个好象死循环了

yakczh 发表于 2011-02-16 22:32

如果我要在一个字符串中查找子串出现了多少,用什么函数? 类似php的strpos


$htm="<div ><span> hello </span><span >world</span></html>";
$pos=0;
while( ($pos=strpos($htm,'<span',$pos) ) >-1 ){
    $pos++;
    $index++;

}
print $index;

2gua 发表于 2011-02-17 08:24

\G,结合scan和gsub用。

yakczh 发表于 2011-02-17 13:59

本帖最后由 yakczh 于 2011-02-17 14:01 编辑

有没有示例 
网上搜了一下,只有这个例子p "-abc-def--ghi-".gsub(/\G-\w+/){[        DISCUZ_CODE_0        ].upcase}
#=> "-ABC-DEF--ghi-"
p "-abc-def--ghi-".scan(/\G-\w+/)
#=> ["-abc", "-def"]
p "-abc-def-ghi-".index(/\G\w+/)        #=> nil
p "-abc-def-ghi-".index(/\G\w+/, 1)        #=> 1
p "-abc-def-ghi-".index(/\G\w+/, 5)        #=> 5p page.scan(/\G\w+/) 返回[]
p page.index(/\G\w+/)返回nil
还有
p "-abc-def-ghi-".index(/\G\w+/, 1)        #=> 1
p "-abc-def-ghi-".index(/\G\w+/, 5)        #=> 5
这种用法,函数的返回值就是参数,这样的函数有用吗?

2gua 发表于 2011-02-17 14:13

楼上,你试试代码不就知道了吗?

yakczh 发表于 2011-02-17 14:26

p page.scan(/\G\w+/) 返回[]
p page.index(/\G\w+/)返回nil

这就是试的结果啊

yakczh 发表于 2011-02-17 14:36



试的结果

2gua 发表于 2011-02-18 08:58

没太看明白你的意思,你举个字符串例子来说明你的情况好了。

yakczh 发表于 2011-02-19 13:27

page=open(filename,'r:gbk').read
findme="<script"
pos=-1
count=0
loop {
   pos=page.index(findme,pos+1)
   
   break unless pos!=nil
   count+=1
}

puts count
页: [1] 2
查看完整版本: ruby 正则没有全局匹配选项吗? 只有i和m