这就是我想要的

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)

10-08 00:30