Python 查找模式的所有匹配项并在文本中替换它们
我有一个模式如下:Python 查找模式的所有匹配项并在文本中替换它们,python,regex,match,Python,Regex,Match,我有一个模式如下: measurement = re.compile("(\d+(?:\.\d*)?)\s*x\s*(\d+(?:\.\d*)?)\s*(cm|mm|millimeter|centimeter|millimeters|centimeters)") 它可以在一个句子和一份文件中多次出现。我想找到所有匹配项并用“MEASUREMENT”替换它,还想在列表中添加它的值 **Input_Text**: measuring 9 x 5 mm and previously measurin
measurement = re.compile("(\d+(?:\.\d*)?)\s*x\s*(\d+(?:\.\d*)?)\s*(cm|mm|millimeter|centimeter|millimeters|centimeters)")
它可以在一个句子和一份文件中多次出现。我想找到所有匹配项并用“MEASUREMENT”替换它,还想在列表中添加它的值
**Input_Text**: measuring 9 x 5 mm and previously measuring 8 x 6 mm
**Output**: measuring MEASUREMENT and previously measuring MEASUREMENT
**List**: 9 x 5 mm, 8 x 6 mm
到目前为止,我的代码如下,但它只带来了第一个匹配项:
result = re.search(measurement, Input_Text)
if result:
Input_Text = Input_Text.replace(result, "MEASUREMENT")
您可以使用进行替换,并re.findall()
获取所有匹配的字符串
measurement=re.compile((\d+(?:\。\d*))\s*x\s*(\d+(?:\。\d*)?)\s*(厘米毫米厘米)
text=“测量9 x 5 mm,之前测量8 x 6 mm”
values=re.findall(模式=测量,字符串=文本)
sub_text=re.sub(模式=measurement,字符串=text,repl='measurement')
>>>子文本
“测量和先前测量”
>>>价值观
[('9','5','mm'),('8','6','mm')]
您可以用于替换,并使用re.findall()
获取所有匹配的字符串
measurement=re.compile((\d+(?:\。\d*))\s*x\s*(\d+(?:\。\d*)?)\s*(厘米毫米厘米)
text=“测量9 x 5 mm,之前测量8 x 6 mm”
values=re.findall(模式=测量,字符串=文本)
sub_text=re.sub(模式=measurement,字符串=text,repl='measurement')
>>>子文本
“测量和先前测量”
>>>价值观
[('9','5','mm'),('8','6','mm')]
如果不想对字符串进行两次解析,可以使用re.sub
和函数作为替换参数。使用此函数,您可以轻松填充匹配字符串的列表
pat = re.compile(r'\d+(?:\.\d*)?\s*x\s*\d+(?:\.\d*)?\s*(?:cm|mm|millimeters?|centimeters?)')
s = r'measuring 9 x 5 mm and previously measuring 8 x 6 mm'
l = []
def repl(m):
l.append(m.group(0))
return 'MEASUREMENT'
s = pat.sub(repl, s)
如果不想两次解析字符串,可以使用
re.sub
和函数作为替换参数。使用此函数,您可以轻松填充匹配字符串的列表
pat = re.compile(r'\d+(?:\.\d*)?\s*x\s*\d+(?:\.\d*)?\s*(?:cm|mm|millimeters?|centimeters?)')
s = r'measuring 9 x 5 mm and previously measuring 8 x 6 mm'
l = []
def repl(m):
l.append(m.group(0))
return 'MEASUREMENT'
s = pat.sub(repl, s)
使用
re.finditer(模式、字符串)
;)。无论如何,您不能在文本中替换结果
;这是一个。那么为什么会有一个单独的findings\u部分
变量呢?这与Input_Text
相同吗?使用re.finditer(模式、字符串)
)。无论如何,您不能在文本中替换结果
;这是一个。那么为什么会有一个单独的findings\u部分
变量呢?这和输入文本是一样的吗?来自这里:它对我有用。来自这里:它对我有用。