python - 正则表达式捕获Python中字符串和\n字符之间的数据

标签 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.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/

相关文章:

regex - 如何使用 Groovy 的正则表达式获取部分匹配的 bool 值?

java - JSF <f :validateRegex pattern

python - 在 Django 中将 Postgres 与 Oscar 同步时出现编程错误

python - 提高 Django 中的 INSERT 性能以处理大量大量数据的记录

python - 使用常规exp。在Python中

sql - 正则表达式删除字符串中所有出现的多个字符

python - 使用 asyncio 的相互递归协程

python - 从 python 中的理解返回多个列表

python - 用 beautifulsoup 克隆元素

javascript - 正则表达式在<a>中删除删除的标签后查找youtube链接