2010-11-26 107 views
1

能someon请告诉我它匹配一切都像一个正则表达式:image.php类型= regcheck & imagehash=3d600fe2ad3c87c9b22ade7e58ef1c48快速正则表达式问题

这个字符串包含在一个页面的源代码.. 感谢。 :)

编辑:这里是所在的地方:

<img id="imagereg" src="image.php?type=regcheck&amp;imagehash=3d600fe2ad3c87c9b22ade7e58ef1c48" alt="Registration Image" border="0" height="61" width="201"> 
+3

你有什么这么远吗?你在使用哪种引擎/环境?你期望人们做你的工作吗? – Lucero 2010-11-26 23:58:14

+2

1.不要使用正则表达式解析(X | X?HT)?ML。使用工作解析器。如果它值得它的盐,它也可以让你更容易地刮页面。 2.您的规格不存在。 `。*`符合你的例子,但它不是你想要的。 3.见Lucero。 – delnan 2010-11-26 23:59:25

+0

字符串的哪部分是可变的?你想保存或更改哪部分? – 2010-11-26 23:59:32

回答

3

如果哈希是变化的唯一的事情,你有.*替换它,并逃脱所有现有.?\因为它是一个正则表达式特殊字符...等等,是这样的:

image\.php\?type=regcheck&imagehash=.* 

还要注意的是.*可以“贪婪”,走投入太多 - 我不知道你在用正则表达式解析什么(SOM文本电子部分将帮助),但也许明星后空单会做的伎俩......

编辑:基于您的评论,正则表达式归结为:

"image\.php\?type=regcheck&imagehash=.*" 

"属于正则表达式,如:

string regexExpression = "\"image\.php\?type=regcheck&imagehash=.*\"" 
2

我认为你需要一个分析器,但因为你没有指定任何语言,这里有一个正则表达式来MATC那个。

我不确定您是否尝试仅匹配imagehash或匹配src下的整个字符串。

所以我会假设,你想串src下匹配:

<img id="imagereg" src="(.*?)" alt="Registration Image" border="0" height="61" width="201"> 

上述正则表达式将src值与altborder匹配等属性。但是,如果你想在匹配所有src值的所有img标签:

<img.*?src="(.*?)".*?> 

在Python中,你可以做一个m = re.search(..)m.group(1)返回该组。 在Perl $source =~/.. /返回匹配组:$1

对于符号,更好的来取代它,例如在Perl:

$string =~ s/&amp;/&/g; 

的Python:

string.replace('&amp;', '&')