2016-05-27 57 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的文檔。