Python 在“中分别捕获所有运算符、括号和数字”;(3&x2B;44)*5/7“;用正则表达式

Python 在“中分别捕获所有运算符、括号和数字”;(3&x2B;44)*5/7“;用正则表达式,python,regex,tokenize,Python,Regex,Tokenize,对于输入字符串:st=“(3+44)*5/7” 我希望只使用正则表达式得到以下结果:[“(”、“3”、“+”、“44”、“*”、“5”、“/”、“7”] 尝试: 但是我需要分别捕获'(3'和)*'中的括号 这会产生大量的空白代币 不能在字符类中使用像\d+这样的多字符构造 所以你可以像这样用蛮力来做: re.findall(r"\(|\)|\d+|-|\*|/", st) 或者,您可以将字符类用于单个字符标记,并与其他内容交替使用: re.findall(r"[()\-*/]|\d+",

对于输入字符串:
st=“(3+44)*5/7”

我希望只使用正则表达式得到以下结果:
[“(”、“3”、“+”、“44”、“*”、“5”、“/”、“7”]

尝试:

  • 但是我需要分别捕获
    '(3'
    )*'
    中的括号

  • 这会产生大量的空白代币


  • 不能在字符类中使用像
    \d+
    这样的多字符构造

    所以你可以像这样用蛮力来做:

    re.findall(r"\(|\)|\d+|-|\*|/", st)
    
    或者,您可以将字符类用于单个字符标记,并与其他内容交替使用:

    re.findall(r"[()\-*/]|\d+", st)
    

    这将忽略并跳过输入中的所有废话(
    3+废话4
    将变成
    [“3”、“+”、“4”]
    )。可能不是有意的。啊哈,我认为字符集构造是在正则表达式中执行OR的唯一方法。
    |
    符号就是我要找的。关于
    re.findall((\d+\S)”,st)
    怎么样?
    re.findall(r"\(|\)|\d+|-|\*|/", st)
    
    re.findall(r"[()\-*/]|\d+", st)