我正在学习 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.search(r'NAME:\s*(.+)', string_data)
但我得到的输出是“KHAN NASEEM\n\n22972 LAHSER RD\n\n...”,但我只想要 KHAN NASEEM。
\n = 字符串文字,而不是实际的换行符
最佳答案
如果您尝试从 NAME:
获取所有字符直到反斜杠后跟 n
字母,使用
\bNAME:\s*(.+?)(?:\\n|$)
请参阅regex demo .
详细信息
-
\b
- 单词边界 -
NAME:
- 一个NAME:
子串 -
\s*
- 0+ 空格 -
(.+?)
- 第 1 组:除行布雷尔字符外的一个或多个字符,尽可能少 -
(?:\\n|$)
- 字符串结尾或反斜杠后跟n
下面是Python demo :
import re
s = r'NAME: KHAN NASEEM\n\n22972 LAHSER RD\n\n...' # Note r'' prefix: all \ are literal backslashes here!
m = re.search(r'\bNAME:\s*(.+?)(?:\\n|$)', s)
if m:
print(m.group(1)) # => KHAN NASEEM
注意:您应该检查如何将文本从数据库提取到 Python。 \n
实际上应该是换行符。修复后,您只需使用
r'\bNAME:\s*(.+)'
整个词NAME:
、0+ 个空格,并且第 1 组将捕获除换行符之外的一个或多个字符,尽可能多(即该行的其余部分)。
关于python - 正则表达式捕获Python中字符串和\n字符之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46713657/