首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

求一RUBY的正则表达式,该怎么解决

2012-02-23 
求一RUBY的正则表达式想把字符串中的以包含[if+空格+任意多个字符+XYZ+空格+end]的地方替换成一空格.我写

求一RUBY的正则表达式
想把字符串中的以包含   [if+空格+任意多个字符+XYZ+空格+end]的地方替换成一空格.
我写的是newStr   =   str.gsub(/if\s+*XYZ.*\s+end/, '   ')
如果str   =   "abc   if   dfelieXYZoiuo   end   ttt   if   ereXYXdd   end "时
newStr   =     "abc     "
但我想要的结果是:newStr   =   "abc     ttt     "

用什么参数可以得到最小匹配,而不是最大匹配.先谢了.

[解决办法]
str = "abc if dfelieXYZoiuo end ttt if ereXYZdd end "
newStr = str.gsub(/\s*if\s+.*?XYZ.*?\s+end\s*/, ' ')
newStr = str.gsub(/\s*if\s+\S*XYZ\S*\s+end\s*/, ' ')

可以在*后加?,表示最少匹配;或者使用更严格的\S而不是.。个人推荐你使用第二种。

另外你原来的代码写的就有几个问题,我给你纠正过来了。连第二个 "XYZ "都写成 "XYX ",害我调了半天。

热点排行