使用python正则表达式查找重复表达式

| 您好,我正在尝试从文件中检索以下字符串
neighbors= {5 7 9 11 13 14 15 16 17 }
模式
{number1 number2... }
有所不同,有些短,有些太长。我想找到这样的模式。我的逻辑是检索语句“ 2”,后跟一个数字和一个空格作为重复,直到程序找到最后一个闭合的花括号。有人可以帮我解决语法问题吗? 谢谢     
已邀请:
我认为您正在寻找这个:
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 }
尽管您应该记住,“ 9”是指目标字符串中多次出现的正则表达式匹配。提供的示例没有说明需要ѭ9     
我将整行中包含单词neighbors的位置,提取大括号之间的字符串,按空格分隔,然后我将得到一个可以转换为整数的字符串数组     
这是关于您要求的:
neighbors= \\{ (\\d+ )+\\}
使其更容忍{}制动器周围的一些可选空间:
neighbors= ?\\{ ?(\\d+ )+(\\}|\\d+\\})
或更短的一个:
neighbors\\s*=\\s*\\{[\\d\\s]+\\}
    

要回复问题请先登录注册