正则表达式在Python中捕获String和\ n字符之间的数据

时间:2017-10-12 15:37:45

标签: python regex

我正在学习python,我想在' NUMBER:'之间捕获数据。和\ n

NUMBER: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 \ n \ n22972 LAHSER RD \ n \ n ...",但我只想要KHAN NASEEM。

\ n =字符串文字,而不是实际的新行

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

import re
s = "NUMBER: 3741733552\n556644"
final_data = re.findall('NUMBER:\s*(.*?)\n', s)

输出:

['3741733552']

答案 1 :(得分:1)

以下是我的问题解决方案。它简短,易读。你可能会变得更复杂,但我喜欢保持简单:-)。我希望这可以帮助你!

>>> import re
>>> num = 'NUMBER: 3741733552\n556644'
>>> search = re.search(r'([0-9].*)', num).group(0)
>>> print(search)
3741733552

答案 2 :(得分:1)

如果您尝试将所有字符从returnsDistinctResults加到反斜杠后跟NAME:个字母,请使用

n

请参阅regex demo

<强>详情

  • \bNAME:\s*(.+?)(?:\\n|$) - 字边界
  • \b - NAME:子字符串
  • NAME: - 0+ whitespaces
  • \s* - 第1组:尽可能少的线条以外的一个或多个字符
  • (.+?) - 字符串的结尾或反斜杠后跟(?:\\n|$)

以下是Python demo

n

注意:您应该检查如何将文本从数据库提取到Python。 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 实际上应该是换行符。修好后,您只需使用

即可
\n

整个单词r'\bNAME:\s*(.+)' ,0 +空格,而第1组将捕获除换行符之外的一个或多个字符,尽可能多(即该行的其余部分)。