[英]find a repetitive expression using python regular expression
您好我正在嘗試從文件中檢索以下字符串
neighbors= {5 7 9 11 13 14 15 16 17 }
模式{number1 number2... }
有所不同,有些是短的,有些則太長。 我想找到這樣的模式。 我的邏輯是檢索語句"neighbors= {"
,后跟一個數字和一個空格作為重復,直到程序找到最后一個閉括號。 有人可以幫助我解決語法問題嗎?
謝謝
我想你正在尋找這個:
import re
FOO = """neighbors= {5 7 9 11 13 14 15 16 17 }"""
match = re.search('(neighbors\s*=\s*\{\s*(\d+\s*)+\})', FOO)
print match.group(1)
正則表達式是可移植的,當然是許多不同的語言。
運行產生......
neighbors= {5 7 9 11 13 14 15 16 17 }
但是正則表達式將匹配花括號中的任意數量的數字。
用re.findall()
和re.compile()
......
import re
FOO = """neighbors= {5 7 9 11 13 14 15 16 17 }"""
COMPILE = re.compile('(neighbors\s*=\s*\{\s*(\d+\s*)+\})')
match = re.findall(COMPILE, FOO)
print match[0]
運行第二個代碼返回...
neighbors= {5 7 9 11 13 14 15 16 17 }
雖然您應該記住.findall()
意味着在目標字符串中多次出現正則表達式匹配。 提供的示例.findall()
對.findall()
這是關於你要求的:
neighbors= \{ (\d+ )+\}
使其更容忍{}支架周圍的一些可選空間:
neighbors= ?\{ ?(\d+ )+(\}|\d+\})
或者更短的:
neighbors\s*=\s*\{[\d\s]+\}
我會用整個單詞中的鄰居,提取大括號之間的字符串,按空格分割然后我有一個可以轉換為整數的字符串數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.