2

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

到目前为止,我有以下内容:

>>> 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']

我在这里想念什么?谢谢您的帮助。

4

3 回答 3

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 文档页面上阅读有关前瞻的更多信息。

于 2013-07-26T19:25:46.230 回答
4

使用\n(?! ). 这是一个负前瞻

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


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

  • ' '(一个空格)
  • \t(标签)
  • \n(新队)
  • \r(回车)
于 2013-07-26T19:26:18.267 回答
0

你需要一个前瞻断言。

re.split('(\n(?=[^ ]))', s)
于 2013-07-26T19:26:21.060 回答