ruby 正则没有全局匹配选项吗? 只有i和m
page=~/<script.*?<\/script>/im这种一次只能匹配出一个script块
象 perl =~/<script.*?<\/script>/gi 可以匹配出所有的script code.scan(/<script.*?<\/script>/mi).each{ |script|
puts script
}
这个好象死循环了 如果我要在一个字符串中查找子串出现了多少,用什么函数? 类似php的strpos
$htm="<div ><span> hello </span><span >world</span></html>";
$pos=0;
while( ($pos=strpos($htm,'<span',$pos) ) >-1 ){
$pos++;
$index++;
}
print $index; \G,结合scan和gsub用。 本帖最后由 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
这种用法,函数的返回值就是参数,这样的函数有用吗? 楼上,你试试代码不就知道了吗? p page.scan(/\G\w+/) 返回[]
p page.index(/\G\w+/)返回nil
这就是试的结果啊
试的结果 没太看明白你的意思,你举个字符串例子来说明你的情况好了。 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