2013-05-02 32 views
1

我有一个字符串,我想通过换行来分割字符,但是我想离开\ n字符,如果它是在字符串的开头。我知道\ A匹配字符串的开头,但我不知道如何否定它。我猜我会使用类似:Python的正则表达式: n字符,只要 n不在开始

re.split(r"(expression here) & (?<!)\n", text) 

(我也离开\ n个字符用空格开头)

任何人都可以点我在正确的方向?

一个例子:

" 
:10 e:1110 h:1111 l:110 o:000 x:001 y:010 z:011 
11111110110110000100011001010011" 

"\n:10 e:1110 h:1111 l:110 o:000 x:001 y:010 z:011\n11111110110110000100011001010011" 

应该站出来为

["\n:10 e:1110 h:1111 l:110 o:000 x:001 y:010 z:011","11111110110110000100011001010011"] 
+0

所以,你想拆分换行符,但只有在该行是空的时才会将其保留在内? 'line1 \ n \ nline3'会留下一个换行符? – 2013-05-02 10:24:46

+0

是的,这似乎是。基本上我有一个格式化为字符串的编码字典,我想离开\ n,如果它看起来像:“\ n:codehere a:othercode b:anothercode”等。 – 2013-05-02 10:26:56

+0

您可以通过包括几个样本,在这里输出。 – 2013-05-02 10:30:29

回答

2

由于lookarounds实际上不提前的正则表达式引擎的 “光标” 在主题字符串,你可以简单地检查两个条件在同一个地方,通过在一个anoth之后写两个lookarounds ER:

(?<![ ])(?<!\A)\n 

注意\A匹配字符,而不是一个字符之间的位置,所以先行的作品一样好:

(?<![ ])(?!\A)\n 

方括号是没有必要的,但我觉得他们可读性因为它们可以更容易地识别文字空间字符。