簡體   English   中英

使用python正則表達式找到重復的表達式

[英]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.

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