2

我对正则表达式了解不多,正在努力学习它们。我正在使用 Python 并且需要使用re.compile来创建一个匹配任何以变量字符串开头的字符串的正则表达式。字符串是可变的url。目前我有re.compile('%s*'%url),但它似乎不起作用。我究竟做错了什么?

4

2 回答 2

4

使用re.escape(url)

In [15]: import re

In [16]: url = 'http://stackoverflow.com'

In [17]: pat = re.compile(re.escape(url))

In [18]: pat.match('http://stackoverflow.com')
Out[18]: <_sre.SRE_Match object at 0x8fd4c28>

In [19]: pat.match('http://foo.com') is None
Out [19]: True
于 2013-01-02T04:38:02.770 回答
0

虽然正则表达式适用于这种情况,但为什么不使用str. 开始()?使您的事情变得更简单,并且已经内置在 python 中,用于此类情况。它还压缩了必须使用您的代码完成的所有操作,例如编译、匹配等。因此,您的代码可以如下所示,而不是正则表达式:

url = "http://example.com/"
string = "http://example.com is a great site! Everyone check it out!"
if string.startswith(url):
    print 'The string starts with url!'
else:
    print "The string doesn't start with url. Very unfortunate."
于 2013-01-02T04:40:56.400 回答