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)