正则表达式变量

时间:2016-05-27 21:00:11

标签: python regex

我使用regex101.com#python,这是我的字符串:

正则表达式:

.* src=.(?<Pvar1>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).* dst=.(?<Pvar2>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})

测试字符串:

k=57829.57892gfjhfg.tur90eunn 4538.333.3 user="JHenry" src="10.10.1.21" dst="10.10.20.42" ttubbies="yellow"]

我尝试将此转置为我的代码,但我不知道如何执行此操作。如何在Python中获取var1var2并打印它们?

我试了print(var1)但没有成功。

2 个答案:

答案 0 :(得分:4)

使用group()返回的Match对象的re.match方法访问捕获组。如果使用普通捕获组,则参数为组编号;如果使用命名捕获组,则参数是名称。

str = 'k=57829.57892gfjhfg.tur90eunn 4538.333.3 user="JHenry" src="10.10.1.21" dst="10.10.20.42" ttubbies="yellow"]'
regexp = r'.* src=.(?<Pvar1>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).* dst=.(?<Pvar2>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})'
match = re.match(regexp, str)
pvar1 = match.group('Pvar1')
pvar2 = match.group('Pvar2')

请参阅Match objects的文档。

答案 1 :(得分:0)

我会做这样的事情。

import re
string = 'k=57829.57892gfjhfg.tur90eunn 4538.333.3 user="JHenry" src="10.10.1.21" dst="10.10.20.42" ttubbies="yellow"]'
results = re.match(".* src=.(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).* dst=.(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})", string)
print results.group(1)
print results.group(2)

示例输出:

$ python t.py
10.10.1.21
10.10.20.42