浏览 3705 次
锁定老帖子 主题:ruby 正则表达式匹配但不包含
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-25
最后修改:2009-02-25
的到括号内的字符串 也可以是<html>...</html> 按说应该用 (?=\{)[^{}]* 或者 [^{}]*(?=\}) 或者 (?=\{)[^{}]*(?=\}) 实际上这种,匹配但并不在范围内的正则表达,只有在后面有用。就是说第一和第三的匹配都不能达到要求,第一个匹配成了{sdbeis,第三个有逻辑错误,没有匹配结果。只有第二个可以满足要求。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-02-25
最后修改:2009-02-26
你用的这个本来就是look ahead(零宽度肯定预查),看名字也知道是用在后面的了。
ruby1.9有look behind了,分别是零宽度肯定回顾(?<=)和零宽度否定回顾(?<!) |
|
返回顶楼 | |
发表时间:2009-02-25
最后修改:2009-02-25
irb(main):003:0> str="{{sf}s{ssf}" irb(main):003:0> str.scan(/\{(.*?)\}/).to_s => "{sfssf" |
|
返回顶楼 | |
发表时间:2009-02-25
嗯同orange0513,楼主需要的是环视(lookaround),包括正向环视(lookahead)和逆向环视(lookbehind)都需要。“环视”这个翻译方式是从《精通正则表达式》的中文版看到的,觉得这词翻得不错。之前有一帖也用到过lookahead和lookbehind的组合,http://rednaxelafx.iteye.com/blog/193648
|
|
返回顶楼 | |
发表时间:2009-02-25
受教了^_^
你们的办法好 |
|
返回顶楼 | |