簡體   English   中英

從一行中提取所有字符串,不包括多個正則表達式模式匹配項

[英]Extract all strings from a line excluding multiple regex patterns matches

我有這些正則表達式模式,我用它來從文本中提取特定的字符串。 我正在使用 python3

'\d{2}\/\d{2} ' - 提取日期 dd/mm

'\S+\.\d\d' - 提取帶 2 位小數的金額

' \d{6} ' - 提取參考編號,6 位數字

現在我想提取提取這些數據后剩下的任何內容(來自示例的示例:-“DUITNOW TRSF XXuu9876 CR ANG BENG KHOON”)。

我應該寫什么樣的正則表達式模式?

示范文本 -

“31/12 DUITNOW TRSF XXuu9876 CR 004085 ANG BENG KHOON 40,000.00 2,059,044.30”

感謝你的幫助。 謝謝

試試這個方法。

import re
s = "31/12 DUITNOW TRSF CR 004085 ANG BENG KHOON 40,000.00 2,059,044.30"
print(s)
s1 = re.sub('\d{2}\/\d{2} ', '', s)
print(s1)
s2 = re.sub('\S+\.\d\d', '', s1)
print(s2)
s3 = re.sub('\d{6}', '', s2)
print(s3)
s3 = 'DUITNOW TRSF CR  ANG BENG KHOON'

你可以使用你必須重新re.split字符串的模式(雖然我已經稍微修改了模式):

import re
p = r'\s*(?:\d{2}\/\d{2}(?!\S)|\S+\.\d\d|(?<!\S)\d{6}(?!\S))\s*'
text = "31/12 DUITNOW TRSF CR 004085 ANG BENG KHOON 40,000.00 2,059,044.30"
print( list(filter(None, re.split(p, text))) )
# => ['DUITNOW TRSF CR', 'ANG BENG KHOON']
print( " ".join(re.split(p, text)).strip() )
# => DUITNOW TRSF CR ANG BENG KHOON

請參閱正則表達式Python 演示

請注意,這些模式被組合成\s*(?:...|...|etc.)\s*類型的單個模式,即兩端帶有可選空白模式的非捕獲組。 (?<!\S)(?!\S)空白邊界

由於字符串開頭或結尾的匹配可能會產生空字符串,並且在連續匹配的情況下,必須從空匹配中過濾結果列表。

暫無
暫無

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

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