求包含字符串 “AAA”,而且不包含字符串 “BBB”"的正则表达式

悬赏:5 发布时间:2008-08-06 提问人:lzy.je (初级程序员)

a = /(^((?!gif).)*$)/i
a1= /php/i

b = "a string XXXXX"

puts "ok" if (b =~ a) and (b =~ a1)

请问把a和a1两个表达式合并怎么写?
表示:"同时匹配,包含字符串 “php”,而且不包含字符串 “gif”"的表达式.

谢谢!~~~~

采纳的答案

2008-08-06 rainux (中级程序员)

/^((?<!gif).)*(?<!gif)php(?!gif)(.(?!gif))*$/


注意用到了 look behind assertion,如果是用于 Ruby,1.8 系列内置的正则表达式引擎是不支持的,需要用 gem 安装用于 1.9 的正则表达式引擎 Oniguruma。

gem install oniguruma

提问者对于答案的评价:
Thanx