我想用->=>或用多个空格包裹的字符串来分割字符串,这意味着分割后我可以从以下字符串中得到两项,分别是shehe
"she he", "she he", "she he ", "she he ", "she->he", "she ->he", "she=>he", "she=> he", " she-> he ", " she => he \n"

我试过使用此:

re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split(' she  -> he \n')


我得到的是一个包含四个项目的列表:[' she', ' -> ', ' -> ', 'he \n']

为此,

re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split('she he')


我得到这个:['she', ' ', None, 'he']

为什么有四个项目?而且我怎么能只得到两个而没有中间两个呢?

最佳答案

如果您可以只删除输入字符串。根据您的描述,您只需要在\s+\s*->\s*\s*=>\s*上拆分单词

所以这是我的解决方案:

p = re.compile(r'\s*[-=]>\s*|\s+')
input1 = "she he"
input2 = " she  -> he \n".strip()

print p.split(input1)
print p.split(input2)


您的输出将只是“她”和“他”:

['she', 'he']

09-25 21:18