gpt4 book ai didi

python - 关于如何在 str 中找到所有需要的格式

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:27 26 4
gpt4 key购买 nike

我有一个这样格式的文本,

s = '[aaa]foo[bbb]bar[ccc]foobar'

其实正文是这样的中国车评

【最满意】整车都很满意,最满意就是性价比,...【空间】空间真的超乎想象,毫不夸张,...【内饰】内饰还可以吧,没有多少可以说的...

现在我想把它拆分成这些部分

[aaa]foo
[bbb]bar
[ccc]foobar

第一次尝试

>>> re.findall(r'\[.*?\].*?',s)
['[aaa]', '[bbb]', '[ccc]']

只有上半场。

然后我试了一下

>>> re.findall(r'(\[.*?\].*?)\[?',s)
['[aaa]', '[bbb]', '[ccc]']

还是只有上半场

最后我必须分别得到两个部分然后压缩它们

>>> re.findall(r'\[.*?\]',s)
['[aaa]', '[bbb]', '[ccc]']

>>> re.split(r'\[.*?\]',s)
['', 'foo', 'bar', 'foobar']

>>> for t in zip(re.findall(r'\[.*?\]',s),[e for e in re.split(r'\[.*?\]',s) if e]):
... print(''.join(t))
...
[aaa]foo
[bbb]bar
[ccc]foobar

所以我想知道是否存在某些正则表达式可以直接将其拆分为这些部分?

最佳答案

方法之一:

import re

s = '[aaa]foo[bbb]bar[ccc]foobar'
result = re.findall(r'\[[^]]+\][^\[\]]+', s)

print(result)

输出:

['[aaa]foo', '[bbb]bar', '[ccc]foobar']

  • \[\] - 按字面匹配括号
  • [^]]+ - 匹配除 ]
  • 之外的一个或多个字符
  • [^\[\]]+ - 匹配除括号 \[\]
  • 之外的任何字符

关于python - 关于如何在 str 中找到所有需要的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009046/

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