2016-05-27 58 views
0

我使用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)没有任何成功。

+0

什么''咋办呢?我在测试字符串中没有看到。 – TigerhawkT3

+2

@ TigerhawkT3这是一个有名的捕获组。 – Barmar

+0

're.search'或're.match'。 – GingerPlusPlus

回答

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 
4

捕获组使用Match对象的group()方法访问,该对象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的文档。