我想将正则表达式应用于python中的以下字符串,我只想捕获型号:123。我尝试了以下正则表达式,但未获取结果。
string = """Model Number : 123
Serial Number : 456"""
model_number = re.findall(r'(?s)Model Number:.*?\n',string)
输出如下:型号:123 \ n如何避免在输出末尾使用\ n?
答案 0 :(得分:1)
删除DOTALL (?s)
内联修饰符,以避免将换行符与.
匹配,在\s*
之后添加Number
并使用.*
代替{{1 }}:
.*?\n
请参见regex demo
在这里,r'Model Number\s*:.*'
将匹配一个文字子字符串,Model Number
将匹配0+空格,\s*
将匹配一个冒号,:
将匹配0个或更多字符除换行符以外的其他字符。
.*
如果您只需要提取数字,请使用
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 demo和this 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()
这将删除所有空格