这就是我想要的
split('number1+number2')
-->['number1', '+', 'number2']
和
split('number1 * number2')
-->['number1', '*', 'number2']
我想对*,+和-进行拆分,但请保留它们。因此,我尝试做
re.split('(\W+)', mystring)
,它虽然有效,但也保留了空格。我该怎么办? 最佳答案
[^\w\s]
匹配的字符既不是单词字符也不是空格,因此您可以使用
>>> re.split(r"\s*([^\w\s]+)\s*",'number1 * number2')
['number1', '*', 'number2']
或者,作为详细的正则表达式:
re.split(
r"""\s* # Match (but don't capture) optional whitespace characters
( # Capture...
[^\w\s]+ # one or more non-whitespace, non-alphanumeric characters
) # End of capturing group
\s* # Match (but don't capture) optional whitespace characters""",
'number1 * number2', flags=re.VERBOSE)