2011-10-01 43 views
0

我想在字符串中找到匹配(x,y)。 以下看起來不錯嗎?按順序搜索(x,y)對

或者更好的選擇,你可以建議。請注意,在(x,y)對之間,在mystring中可能存在幾個空格或逗號。

#!/usr/bin/env python 
import re 
mystring="(3,4) , (2, 4),(5,4), (2,3), " 

tmp= re.findall(r'\(\d+,\d\)+', mystring) 
print tmp 

for i, v in enumerate(tmp): 
    if v =="(5,4)": 
     print "match found" 

謝謝。

+1

你認爲將與正則表達式發生了'(2,4)'那裏是一個空間?它也不會匹配'(2,10)',因爲第二個數字是兩位數字。 – agf

+0

謝謝我認爲對於間隔部分mystring = re.sub(r'\ s','',mystring)可以使用 –

回答

2

爲什麼不搜索您想要對一對?此外,您可以使用\ s來匹配空格。

import re 

def find_pair(x, y, mystring): 
    return re.findall(r'\(\s*?%d,\s*?%d\s*?\)+' % (x, y), mystring); 

print find_pair(2, 4, "(3,4) , (2, 4),(5,4), (2,3), ") 
+0

感謝兄弟...非常緊湊:D –

3

而不是

re.findall(r'\(\d+,\d\)+', mystring) 

使用

re.findall(r'\(5,4\)', mystring) 

,它只會找到你想要

2

沒有正則表達式的需要:

ast.literal_eval(mystring).count((5,4)) 

if (5,4) in ast.literal_eval(mystring): 
    print('Found!') 
+0

什麼是ast?讓我知道請致電 –

+0

@PujanSrivastava http://docs.python.org/library/ast.html – agf