gpt4 book ai didi

Python re.findall 与 * 和 **

转载 作者:行者123 更新时间:2023-12-01 04:25:37 26 4
gpt4 key购买 nike

使用 re.findall,是否可以在列表的同一索引中列出两个连续出现的 * ?

假设我有 str = "2**3 + 2*3" 我希望列表显示为

lis = re.findall('[\+\-*/()]', str)

lis = [2, **, 3, +, 2, *, 3]

是否有像 *|** 这样的正则表达式?

最佳答案

在 char 类后使用 +,它会重复前一个标记一次或多次。

lis = re.findall(r'[-+*/()]+|\d+', string)

lis = re.findall(r'[A-Za-z\d]+|[^\w\s]+', string)

示例:

>>> s = "2**3 + 2*3"
>>> re.findall(r'[-+*/()]+|\d+', s)
['2', '**', '3', '+', '2', '*', '3']
>>> re.findall(r'[A-Za-z\d]+|[^\w\s]+', s)
['2', '**', '3', '+', '2', '*', '3']

您也可以使用re.split

>>> re.split(r'\s*([-+*/()]+)\s*', s)
['2', '**', '3', '+', '2', '*', '3']

关于Python re.findall 与 * 和 **,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194028/

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