. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』 » 专题:命令正则

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
foxme
 
foxme 的头像
核心会员
 
资 料:
注册日期: Mar 2001
帖子: 4,018 声望值: 3
精华: 0,解答: 29
#1 旧 2011-01-01, 15:15:20 默认 【求助】请帮我解读一段正则代码:查找不包含某字段的行
foxme 当前离线  

我在网上看到一个教程

引用:
a = /(^((?!gif).)*$)/i a1= /php/i b = "a string XXXXX" puts "ok" if (b =~ a) and (b =~ a1) 请问把a和a1两个表达式合并怎么写? 表示:"同时匹配,包含字符串 “php”,而且不包含字符串 “gif”"的表达式. 谢谢!~~~~
然后我解读出这个

引用:
^((?!gif).)*$
在emeditor中,似乎他能实现查找不包含gif的行。而且将gif替换成其他文本也可以通用。但是我想知其然,也要知其所以然,所以请朋友们帮我解读一下,这个语句是怎么实现的?非常感谢。
iPhoton
 
iPhoton 的头像
高级会员
 
资 料:
注册日期: Dec 2010
帖子: 534 声望值: 3
精华: 0,解答: 6
#2 旧 2011-01-01, 18:25:22 默认
iPhoton 当前离线  

表达式(?!...)匹配所有“不匹配...”的文本,意思就是如果待匹配的文本里面不包含...这段文本,则匹配成功。

下面是Python文档里面给出的例子:

For example, Isaac (?!Asimov) will match 'Isaac ' only if it’s not followed by 'Asimov'.


汉堡包真好吃
foxme
 
foxme 的头像
核心会员
 
资 料:
注册日期: Mar 2001
帖子: 4,018 声望值: 3
精华: 0,解答: 29
#3 旧 2011-01-02, 02:34:34 默认
foxme 当前离线  

引用:
作者: iPhoton 查看帖子
表达式(?!...)匹配所有“不匹配...”的文本,意思就是如果待匹配的文本里面不包含...这段文本,则匹配成功。下面是Python文档里面给出的例子:For example, Isaac (?!Asimov) will match 'Isaac ' only if it’s not followed by 'As...
麻烦请说详细一些,尤其是那些括号,代表什么意思?
iPhoton
 
iPhoton 的头像
高级会员
 
资 料:
注册日期: Dec 2010
帖子: 534 声望值: 3
精华: 0,解答: 6
#4 旧 2011-01-02, 09:52:56 默认
iPhoton 当前离线  

这里有几篇不错的教程,你可以看一下:

两篇中文教程(前面那篇其中第12节《分组》解释了小括号的含义):

http://deerchao.net/tutorials/regex/regex.htm

http://www.regexlab.com/zh/regref.htm

一篇英文教程:

http://www.regular-expressions.info/tutorialcnt.html

此帖于 2011-01-04 15:40:46 被 iPhoton 编辑. .
judite
 
judite 的头像
热心会员
 
资 料:
注册日期: Jan 2001
帖子: 2,511 声望值: 8
精华: 2,解答: 30
#5 旧 2011-01-02, 20:36:20 默认
judite 当前离线  

^((?!gif).)*$不仅仅匹配不包含gif的行,还匹配不以gif打头的行、空行
楼主最基本的正则知道么
^...表示以...打头
...$表示以...结尾
.表示任意字符
*表示匹配零个或多个字符
(?!...)和(?...)表示正向预搜索,从左边开始找...前面加!表示否定
(...)基本的意思是把...作为一个整体,可在具体写法上很复杂。最最基本的是记住匹配到的内容以备后用,比如在替换命令中9需要如此;还有比如(?:...)意思是不要记住,有时候需要把...的内容当做一个整体来匹配,比如要匹配abcdezzz或abcde这种样子的,/abcde(?:zzz)?/这样子9ok
还有还有,正则好多版本的,要看使用的工具符合什么标准
foxme
 
foxme 的头像
核心会员
 
资 料:
注册日期: Mar 2001
帖子: 4,018 声望值: 3
精华: 0,解答: 29
#6 旧 2011-01-02, 20:49:29 默认
foxme 当前离线  

引用:
作者: judite 查看帖子
^((?!gif).)*$不仅仅匹配不包含gif的行,还匹配不以gif打头的行、空行楼主最基本的正则知道么^...表示以...打头...$表示以...结尾.表示任意字符*表示匹配零个或多个字符(?!...)和(?...)表示正向预搜索,从左边开始找...前面加!表示否定(...)基本的意思是把...作为一个整体,可在具...
Judite是高手。我先拜谢一下。我基本的正则都知道,但是高级 用法,比如“嵌套子模式”和正向反向“预查”我很晕。正在学习iphoton给的教程。让我淡定一会儿,提高一下然后再逐步询问。

再次感谢。
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 20:35:31.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号