2012-03-24 71 views
0
http://www.foobar.com/foo/foo_bar.html?id=abc12A63768adv 
http://www.foobar.com/foo/foo_bar.html?id=gsdfcc6tfsdfgg 
http://www.foobar.com/foo/foo_bar.html?id={8765ABDV-8876-CR56-654A-ADD} 

这些是我必须编写正则表达式的url模式。Python中的正则表达式无法正常工作

re.compile('http://www.foobar.com/foo/foo_bar.html?id=+[a-zA-Z0-9-{}]+$') 

但这不适用于我。

+1

首先,逃避'?'。 – 2012-03-24 20:10:01

+0

'?'必须逃脱 – JBernardo 2012-03-24 20:13:02

回答

1

您必须逃脱(通过预先\)的?否则将被视为正则表达式前面部分的“可选”标志。那么,你应该逃避这些点,否则他们会匹配任何角色。

然后,您应该将-(破折号)移动到您的[]列表的前面,这样正则表达式显然会包括短划线,而不是将破折号用作另一个范围。

最后,你不妨把^放在前面,这样你总是从头开始匹配,类似于你如何使用$到底。

1

这里就是你的模式:

re.compile('http://www.foobar.com/foo/foo_bar.html\?id=[a-zA-Z0-9{}\-]+$') 
  1. ?是一个正则表达式保留关键字,它需要被转义
  2. +在“id = +”是错误的,因为它会匹配“id =”和“id ======”
  3. between [] - 是一个正则表达式保留关键字,它需要进行转义
  4. 约翰说,你应该对整个字符串匹配添加^
相关问题