我有下面这根弦.我想对此进行标记化,以便匹配的花括号和非匹配的组都有

str='{field1}somestring{field2}somestring2{feild3}<somestring3>'

我知道我可以用以下命令来表示花括号:

re.findall('({[^}]*})', str) 
['{field1}', '{field2}', '{feild3}']

但我真正想要的是:

['{field1}', 'somestring', '{field2}', 'somestring2', '{feild3}', '<somestring3>']

我在做这件事上有困难……到目前为止,我最接近的情况是

re.findall('(.*?)({[^}]*})(.*?)', str) 
[('', '{field1}', ''), ('somestring', '{field2}', ''), ('somestring2', '{feild3}', '')]

但是您可以看到,它创建了一个由三个组组成的空字符串数组,最后一个令牌<somestring3>没有被标记化.

如有任何帮助,我们将不胜感激

推荐答案

您可以使用以下命令将字符串标记化为{...}和不包含{}的字符串

re.findall(r'{[^{}]*}|[^{}]+', text)

Details:

  • {[^{}]*}-a {,然后是除{}之外的零个或多个字符,然后是}个字符
  • |-或
  • [^{}]+-{}以外的一个或多个字符.

请看regex demo.

Python相关问答推荐

Python中的函数中是否有充分的理由接受float而不接受int?

从DataFrame.apply创建DataFrame

拆分pandas列并创建包含这些拆分值计数的新列

Python会扔掉未使用的表情吗?

对Numpy函数进行载体化

根据在同一数据框中的查找向数据框添加值

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

使用miniconda创建环境的问题

对所有子图应用相同的轴格式

所有列的滚动标准差,忽略NaN

当递归函数的返回值未绑定到变量时,非局部变量不更新:

Scrapy和Great Expectations(great_expectations)—不合作

当我try 在django中更新模型时,模型表单数据不可见

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

重置PD帧中的值

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

交替字符串位置的正则表达式

使用Openpyxl从Excel中的折线图更改图表样式

如何将返回引用的函数与pybind11绑定?

Django抛出重复的键值违反唯一约束错误