簡體   English   中英

正則表達式在Python中捕獲String和\\ n字符之間的數據

[英]Regex capture data between String and \n character in Python

我正在學習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 =字符串文字,而不是實際的新行

你可以試試這個:

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:獲得所有字符NAME:直到反斜杠后跟n字母,請使用

\bNAME:\s*(.+?)(?:\\n|$)

請參閱正則表達式演示

細節

  • \\b - 單詞邊界
  • NAME: - NAME:子字符串
  • \\s* - 0+空格
  • (.+?) - 第1組:除了線性字符之外的一個或多個字符,盡可能少
  • (?:\\\\n|$) - 字符串的結尾或后跟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

注意 :您應該檢查如何將文本從DB提取到Python。 \\n實際上應該是換行符。 一旦修復,您將不得不使用

r'\bNAME:\s*(.+)'

整個單詞NAME:空格,組1將捕獲除換行符之外的一個或多個字符,盡可能多(即該行的其余部分)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM