簡體   English   中英

循環遍歷python正則表達式匹配

[英]Looping through python regex matches

這必須比我遇到的更容易。 我的問題是轉動一個看起來像這樣的字符串:

ABC12DEF3G56HIJ7

進入

12 * ABC
3  * DEF
56 * G
7  * HIJ

而且我一生都無法使用 REGEX 匹配設計一組正確的循環。 問題的關鍵是代碼必須是完全通用的,因為我無法假設[AZ]片段的長度,也無法假設[0-9]片段的長度。

感謝您的任何幫助!

Python 的re.findall應該適合你。

現場演示

import re

s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')

for (letters, numbers) in re.findall(pattern, s):
    print(numbers, '*', letters)

如果您的數據集很大,最好使用re.finditer ,因為這樣可以減少內存消耗( findall()返回所有結果的列表, finditer()一個一個地找到它們)。

import re

s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')

for m in re.finditer(pattern, s):
    print m.group(2), '*', m.group(1)

暫無
暫無

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

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