gpt4 book ai didi

python - 当开始和结束长度相同时匹配的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:43 25 4
gpt4 key购买 nike

当开始和结束的长度相同时,如何制作匹配的正则表达式?例如

>>> String = '[[A], [[B]], [C], [[D]]]'
>>> Result = re.findall(pattern, String)
>>> Result
>>> [ '[A]', '[[B]]', '[C]', '[[D]]' ]

目前我使用模式 \[.*?\] 但结果是

>>> ['[[A]', '[[B]', '[C]', '[[D]']

提前致谢。

最佳答案

您可以为有限数量的开始/结束字符定义这样的正则表达式(例如,“如果它以 1 开始和结束,或者以 2 开始和结束,等等”)。但是,您不能对无限数量的字符执行此操作。这只是正则表达式的一个事实。正则表达式是有限状态机的语言,而有限状态机不能做计数;为此至少需要下推自动机(上下文无关语法)的强大功能。

简单地说,正则表达式可以说:“我看到了 x,然后我看到了 y”,但它不能说“我看到了x 然后我看到了 y 相同的次数”,因为它不记得它看到了多少次 x

但是,您可以使用图灵完备的 Python 编程语言的全部功能轻松地做到这一点!图灵完备的语言绝对可以做计数:

>>> string = '[[A], [[B]], [C], [[D]]]'
>>> sameBrackets = lambda s: len(re.findall('\[',s)) == len(re.findall('\]',s))
>>> filter(sameBrackets, string.split(", "))
['[[B]]', '[C]']

关于python - 当开始和结束长度相同时匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com