我正在解析一個文件並查找username-#
的行,其中用戶名將更改,破折號後可以有任意數量的數字[0-9]
。在Python正則表達式中使用變量
我嘗試過幾乎所有的組合嘗試在正則表達式中使用變量username
。
我還喜歡re.compile('%s-\d*'%user)
嗎?
我正在解析一個文件並查找username-#
的行,其中用戶名將更改,破折號後可以有任意數量的數字[0-9]
。在Python正則表達式中使用變量
我嘗試過幾乎所有的組合嘗試在正則表達式中使用變量username
。
我還喜歡re.compile('%s-\d*'%user)
嗎?
,它應該工作:
>>> user = 'heinz'
>>> import re
>>> regex = re.compile('%s-\d*'%user)
>>> regex.match('heinz-1')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('heinz-11')
<_sre.SRE_Match object at 0x2b27a2f7c030>
>>> regex.match('heinz-12345')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('foo-12345')
什麼:
re.compile(user + '-\d*')
這應該與原來的正則表達式有什麼不同? – 2011-05-05 15:55:45
你可以使用字符串.format()方法創建的字符串:
re.compile('{}-\d*'.format(user))
是,串聯你自己的正則表達式,或者使用字符串格式。但是如果你的變量可能包含在正則表達式中有特殊含義的字符,請不要忘記使用re.escape()。
我現在覺得很蠢。那麼爲什麼當我嘗試在pdb break中創建它時,它給了我一個語法錯誤 – utahwithak 2011-05-05 16:00:08
What ??????????? – 2011-05-05 16:03:29
在python調試器中,它不會讓我創建它,因爲我正在逐步完成。調試器不是普通的Python解釋器嗎? http://docs.python.org/library/pdb.html – utahwithak 2011-05-05 16:06:33