如何解决使用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]+\\}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。