需要正则表达式来避免使用“ \ n”字符

时间:2019-02-08 08:54:46

标签: python regex

我想将正则表达式应用于python中的以下字符串,我只想捕获型号:123。我尝试了以下正则表达式,但未获取结果。

string = """Model Number : 123 
            Serial Number : 456"""
model_number = re.findall(r'(?s)Model Number:.*?\n',string)

输出如下:型号:123 \ n如何避免在输出末尾使用\ n?

2 个答案:

答案 0 :(得分:1)

删除DOTALL (?s)内联修饰符,以避免将换行符与.匹配,在\s*之后添加Number并使用.*代替{{1 }}:

.*?\n

请参见regex demo

在这里,r'Model Number\s*:.*' 将匹配一个文字子字符串,Model Number将匹配0+空格,\s*将匹配一个冒号,:将匹配0个或更多字符除换行符以外的其他字符

Python demo

.*

如果您只需要提取数字,请使用

import re
s = """Model Number : 123
            Serial Number : 456"""
model_number = re.findall(r'Model Number\s*:.*',s)
print(model_number) # => ['Model Number : 123']

请参见another regex demothis Python demo

在这里,r'Model Number\s*:\s*(\d+)' 将捕获1个或多个数字,而(\d+)将仅返回这些数字。或者,将其与re.findall一起使用,一旦获得匹配数据对象,就用re.search进行抓取。

注意:如果字符串出现在字符串的开头,请使用match.group(1)。或在模式的开头添加re.match并使用^标志(或在模式的开头添加re.M)。

答案 1 :(得分:0)

您可以使用strip()函数

model_number.strip()

这将删除所有空格