gpt4 book ai didi

python - 正则表达式 (Python) - 删除以分隔符开头的行并保留其他分隔符

转载 作者:行者123 更新时间:2023-12-01 06:55:18 24 4
gpt4 key购买 nike

如何分离这样的东西:

; Remove this line  
(?A or :B
(G + D))

删除带有 ; 的行并用空格(删除空格)和“(”或“)”作为分隔符分隔标记,但在Python中使用正则表达式保留它们。

最终结果应该是这样的:

['(', '?A', 'or', ':B', '(', 'G', '+', 'D', ')', ')']

但我无法消除“;”行也不会将 '(', ')' 标记分开。

到目前为止我有这个:

re.split('[;.*]*[^()\[\]:?a-zA-Z0-9-]+', text)

最佳答案

您可以使用

import re
rx = r'^;.*|([()])|\s+'
s = """; Remove this line
(?A or :B
(G + D))"""
print(list(filter(None, re.split(rx, s, flags=re.M))))
# => ['(', '?A', 'or', ':B', '(', 'G', '+', 'D', ')', ')']

请参阅Python demo

详细信息

  • ^;.* - 行的开头(flags=re.M 也会使 ^ 匹配行的开头)并且然后 ; 以及除换行符之外的任何 0 个或多个字符
  • | - 或
  • ([()]) - 捕获组 1(捕获后,匹配项将在结果列表中输出):a () 字符
  • | - 或
  • \s+ - 1+ 个空格(未捕获,因此这些匹配项将被忽略)。

关于python - 正则表达式 (Python) - 删除以分隔符开头的行并保留其他分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837636/

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