正则表达式在Python中捕获字符串和\n字符之间的数据
我正在学习python,我想捕获'NUMBER:'和\n之间的数据 号码:3741733552\n556644 变量中新行字符后的数字,因此不能指望它捕获正则表达式在Python中捕获字符串和\n字符之间的数据,python,regex,Python,Regex,我正在学习python,我想捕获'NUMBER:'和\n之间的数据 号码:3741733552\n556644 变量中新行字符后的数字,因此不能指望它捕获 re.search(r'NUMBER:(.*?)[\n]', string_data).group(1) 我徒劳地尝试了上述代码(这是错误的),请帮助捕获该数字。多谢各位 编辑: 我有一个字符串“NAME:KHAN NASEEM\n\n22972 LAHSER RD\n\n…”,我像代码一样使用它 name = re.sea
re.search(r'NUMBER:(.*?)[\n]', string_data).group(1)
我徒劳地尝试了上述代码(这是错误的),请帮助捕获该数字。多谢各位
编辑:
我有一个字符串“NAME:KHAN NASEEM\n\n22972 LAHSER RD\n\n…”,我像代码一样使用它
name = re.search(r'NAME:\s*(.+)', string_data)
但我得到的输出是“KHAN NASEEM\n\n22972 LAHSER RD\n\n…”,但我只想要KHAN NASEEM
\n=字符串文字,而不是实际的新行您可以尝试以下方法:
import re
s = "NUMBER: 3741733552\n556644"
final_data = re.findall('NUMBER:\s*(.*?)\n', s)
输出:
['3741733552']
下面是我对你问题的解答。它简短易读。你可能会变得更复杂,但我喜欢让事情变得简单:-)。我希望这对你有帮助
>>> import re
>>> num = 'NUMBER: 3741733552\n556644'
>>> search = re.search(r'([0-9].*)', num).group(0)
>>> print(search)
3741733552
如果您试图获取从
NAME:
到反斜杠(后跟n
字母)的所有字符,请使用
\bNAME:\s*(.+?)(?:\\n|$)
看
详细信息
-单词边界\b
-a名称:
子字符串名称:
-0+空格\s*
-第1组:除线路断路器以外的一个或多个字符,尽可能少(.+?)
-字符串结尾或后跟(?:\\n |$)
n的反斜杠
\n
实际上应该是换行符。一旦修复,您只需使用
r'\bNAME:\s*(.+)'
一个完整的单词
名称:
、0+空格和组1将捕获除换行符以外的一个或多个字符(即行的其余部分)。使用r'NUMBER:\s*(\d+)
或r'NUMBER:\s*(.+)
谢谢@WiktorStribiżew上述解决方案适用于数字和字符,如果我遇到类似问题,对吗?
匹配除换行字符以外的任何字符\d
匹配数字,但请注意,在Python3中,它将匹配任何Unicode数字。如果您只需要mstch ASCII数字,则必须使用re.A
标志或只使用[0-9]
。使用NAME:\s*(.+)
是的,我理解,但是类似于r'\bNAME:\s*(.+)(?:\\n |$)
的正则表达式不是一个好的解决方案,因为您的字符串是“转义的”。您的主要问题是转义字符串。
r'\bNAME:\s*(.+)'