Python 在正则表达式拆分方法中,分隔符工作不正常

Python 在正则表达式拆分方法中,分隔符工作不正常,python,regex,Python,Regex,这给了我一个输出: import re text = 'The quick. black n brown? fox jumps*over the lazy dog.' print(re.split('; |, |\? |. ',text)) 但我想把那根绳子分成两部分 ['Th', 'quick', 'brown', 'fo', 'jumps*ove', 'th', 'laz', 'dog.'] 您可以在此处利用零宽度正查找: ['The quick.', 'black n brown?',

这给了我一个输出:

import re
text = 'The quick. black n brown? fox jumps*over the lazy dog.'
print(re.split('; |, |\? |. ',text))
但我想把那根绳子分成两部分

['Th', 'quick', 'brown', 'fo', 'jumps*ove', 'th', 'laz', 'dog.']

您可以在此处利用零宽度正查找:

['The quick.', 'black n brown?', 'fox jumps*over the lazy dog.']

在您的尝试中,如果使用转义版本替换
(任何字符)以获得literal
,即
\
,您将更接近所需的输出:

由于所有模式都有一个字符后跟一个空格,因此可以使用字符类使模式更加紧凑:

In [1463]: text = 'The quick. black n brown? fox jumps*over the lazy dog.'                                                                                                                                  

In [1464]: re.split(r'; |, |\? |. ',text)                                                                                                                                                                    
Out[1464]: ['Th', 'quick', 'blac', '', 'brown', 'fo', 'jumps*ove', 'th', 'laz', 'dog.']

In [1465]: re.split(r'; |, |\? |\. ',text)                                                                                                                                                                   
Out[1465]: ['The quick', 'black n brown', 'fox jumps*over the lazy dog.']
您不需要在字符类
[]
中转义正则表达式标记


另外,通过使用
r

包围模式字符串使正则表达式模式成为原始模式如果我理解您需要什么,您的正则表达式应该有点转义:

In [1466]: re.split(r'[;,?.] ',text)                                                                                                                                                                        
Out[1466]: ['The quick', 'black n brown', 'fox jumps*over the lazy dog.']

不太好。它不会生成OP想要的输出,即
[“快速”,“黑色n棕色”,“狐狸跳过懒狗”。]
但它解决了一个问题。
In [1463]: text = 'The quick. black n brown? fox jumps*over the lazy dog.'                                                                                                                                  

In [1464]: re.split(r'; |, |\? |. ',text)                                                                                                                                                                    
Out[1464]: ['Th', 'quick', 'blac', '', 'brown', 'fo', 'jumps*ove', 'th', 'laz', 'dog.']

In [1465]: re.split(r'; |, |\? |\. ',text)                                                                                                                                                                   
Out[1465]: ['The quick', 'black n brown', 'fox jumps*over the lazy dog.']
In [1466]: re.split(r'[;,?.] ',text)                                                                                                                                                                        
Out[1466]: ['The quick', 'black n brown', 'fox jumps*over the lazy dog.']
print(re.split('; |, |\? |\. ',text)