尝试在Python中以特殊格式查找字符串中包含通配符整数的文本

尝试在Python中以特殊格式查找字符串中包含通配符整数的文本,python,regex,string,search,Python,Regex,String,Search,我有一段代码,可以打开一个文件并迭代每一行 在格式化的文本文件中,将有一段如下所示的文本: import re print re.findall(r'\.(x\d{2}y\d{2})\.', "name.x00y00.whatever") # Prints ['x00y00'] >>> import re >>> strs= "name.x00y00.whatever" >>> match = re.search(r'\.(x\d{2}y\

我有一段代码,可以打开一个文件并迭代每一行 在格式化的文本文件中,将有一段如下所示的文本:

import re
print re.findall(r'\.(x\d{2}y\d{2})\.', "name.x00y00.whatever")
# Prints ['x00y00']
>>> import re
>>> strs= "name.x00y00.whatever"
>>> match = re.search(r'\.(x\d{2}y\d{2})\.',strs)#returns None if pattern is not found
>>> if match:               
...     print match.group(1)
...     
x00y00
name.x00y00.随便什么

我正在搜索x00y00以查看是否存在,并将找到的内容复制到字符串中。问题是数字会发生变化,总是在“x”后面有两位数字,在“y”后面有两位数字。但无法预测这些数字是多少。用通配符搜索文本并复制文本的最佳方法是什么


我对regex完全陌生,因此如果有人能启发我,我将不胜感激。

您可以这样做:

import re
print re.findall(r'\.(x\d{2}y\d{2})\.', "name.x00y00.whatever")
# Prints ['x00y00']
>>> import re
>>> strs= "name.x00y00.whatever"
>>> match = re.search(r'\.(x\d{2}y\d{2})\.',strs)#returns None if pattern is not found
>>> if match:               
...     print match.group(1)
...     
x00y00
我假设
name
任何东西都可以更改,并且
x00y00
块始终由点分隔

\.
匹配一个点,
\d{2}
表示“两位数”。括号捕获了它们所包围的比赛片段

如果存在多个匹配项,我将使用
findall

类似于以下内容:

import re
print re.findall(r'\.(x\d{2}y\d{2})\.', "name.x00y00.whatever")
# Prints ['x00y00']
>>> import re
>>> strs= "name.x00y00.whatever"
>>> match = re.search(r'\.(x\d{2}y\d{2})\.',strs)#returns None if pattern is not found
>>> if match:               
...     print match.group(1)
...     
x00y00

如果字符串始终具有
,则在该字符串上拆分也会起作用:

>>> s = 'name.x12345y34.foo.bar.zoo'
>>> s.split('.')[1]
'x12345y34'

但是,这假设格式是固定的-它总是第二部分。虽然不能保证结果会有数字,但可能不是必需的。

我们是否应该限制“x”和“y”之后的位数?它们应始终为两个作为描述。