已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。
2天前关闭。
Improve this question
样品输入:
x = r"\color{{aqua}}{{text}}"
样本输出:
x = ["aqua", "text"]
我们忽略花括号的嵌套是至关重要的。
如果您将嵌套花括号视为树数据结构的规范,那么我们只需要树的叶节点。
也许正则表达式,比如\{[A-Za-z]\}
会对我们有所帮助。
2条答案
按热度按时间lndjwyie1#
您可以将
re.findall
与以下任何正则表达式一起使用:(?<=\{)[^{}]+(?=\})
\{([^{}]+)\}
第一个正则表达式使用查找圆来匹配任何东西,除了花括号,由一对花括号包围。
第二个匹配花括号的内容与大括号本身,但由于只有一个组存在
findall
将只包含该组的内容,而不是完全匹配。gzszwxb42#
一些正则表达式就可以了。
输出:
请注意,正则表达式
\{+(.*?)\}+
意味着找到一个或多个左花括号\{+}
,然后将后面的内容分组为我想要提取的部分(.*?)
,前提是后面跟着一个或多个右花括号\}+
。(.*?)
中的问号使匹配不贪婪。如果它是贪婪的,那么它匹配的是'{{aqua}}{{text}}'
而不是'{{aqua}}'
。finditer创建了一个可迭代对象,你可以通过循环来获取每个匹配。最后match.group(0)
给出了匹配{{agua}}
和{{text}}
,而www.example www.example.com (1)给出了我想提取aqua
和text
的部分。请参阅Python regex documentation。