拆分分隔符,除非后跟空格

时间:2013-07-26 19:19:34

标签: python regex

我正在试图弄清楚如何分割字符串,保留分隔符,除非分隔符后跟一个空格。我似乎大部分都在那里,除了紧跟分隔符的字符与分隔符一起保留。

到目前为止我的内容如下:

>>> s='\nm222 some stuff \n more stuff'
>>> re.split('(\n[^ ])',s)
['', '\nm', '222 some stuff \n more stuff']

我需要的结果是

['', '\n', 'm222 some stuff \n more stuff']

我在这里缺少什么?谢谢你的帮助。

3 个答案:

答案 0 :(得分:4)

使用否定前瞻:

>>> s='\nm222 some stuff \n more stuff'
>>> re.split(r'(\n(?! ))', s)
['', '\n', 'm222 some stuff \n more stuff']

您的代码,

re.split('(\n[^ ])',s)

不起作用,因为(\n[^ ])将“非空格”字符放在与\n相同的捕获组中,并为您提供\nm(\n(?! ))避免使用“非空格”字符,将其置于下一个捕获组中,但仍然使用它进行拆分。

您可以在python regex documentation page上了解有关前瞻的更多信息。

答案 1 :(得分:4)

使用\n(?! )。这是negative lookahead

这将确保\n后面没有空格


如果您愿意,甚至可以使用\n(?!\s)\s包含各种空白字符,例如

  • ' '(单个空格)
  • \t(标签)
  • \n(换行符)
  • \r(回车)

答案 2 :(得分:0)

你需要一个先行断言。

re.split('(\n(?=[^ ]))', s)