开发者

Is it possible to combine a slice with a regular expression in a search pattern using re.search?

e[1] is equal to 192.168.1.1. I would like to add regular expression to this search to prevent a match against 192.168.11. Can anyone help? I have beat my h开发者_运维百科ead against this for a while. I get a syntax error if I try to append anything after the slice.

re.search(e[1], '192.168.1.11')

<_sre.SRE_Match object at 0x1004c2648>


Since e[1] is a string you can add to it with the '+' operator. For example, you can add r'\b' to set a word boundary (note the raw string; without the 'r' prefix '\b' is a backspace):

>>> e = ['', '192.168.1.1']
>>> pattern = r'\b' + re.escape(e[1]) + r'\b'  #remember to escape e[1]

>>> re.search(pattern, '192.168.1.11')
>>> re.search(pattern, '192.168.1.1spam')

>>> re.search(pattern, '192.168.1.1').group()
'192.168.1.1'

>>> re.search(pattern, 'spam 192.168.1.1 eggs').group()
'192.168.1.1'

>>> string = '192.168.1.1,192.168.1.11,192.168.1.1'
>>> [x.group() for x in re.finditer(pattern, string)]
['192.168.1.1', '192.168.1.1']
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜