2011-10-01 101 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