正则表达式匹配在文本文件中没有非转义引号之前的换行符

时间:2013-12-09 19:36:06

标签: regex python-3.3

我有一个文本文件,其中字符串用引号" "括起来,任何包含引号都由\转义。我不想删除文本中的任何行制动器(\n),只要它们前面没有未转义的引号("),因为那是一行的结尾。

以下是一个例子:

"tre miljarder på att modernisera snabbtågen.\" 
Dagens mest ironiska nyhet.,Väntar på att alla Summerburst-uppdateringar snart ska dö ut   så min ångest kan släppa och jag kan återgå till ett normalt liv.,RT @mapeone: En till hashtag     på Facebook och jag badar naken i grisblod.,Dagens biologiska lektion och psykologiska  reflektion.
Så förlorade fåglarna sina penisar - DN.SE http://t.co/PFaseQMt8B,Hahaha \"@Aliceyouknow:  Hah ironiskt att jag för exakt ett år sen ville gräva ner mig lika mycket som jag vill nu   med.\" #livet,Det är bara kvinnor som på riktigt förstår paniken i om Zlatans hår skulle    försvinna. #ikon,@nellie_lind ah han har ju rakat sidorna, snart ryker väl hela skiten,Alltså    Zlatan ge fan i att mecka med håret.,Jag har ett jobb. Hur tungt är inte det. #tungt"

到目前为止,我提出的正则表达式模式如下所示:

[^"]\n+

但它也匹配\n之前的字符,例如第1行"snabbtågen.\"末尾的引号和第2行.后的点("reflektion")。

我希望它匹配除了非转义\n之外的其他任何内容的",但不包括其前面的内容。怎么办?

1 个答案:

答案 0 :(得分:1)

您应该使用negative lookbehind断言

>>> print s
'first line'
'hello world
again'
>>> s2 = re.sub(r"(?<!')\s+", " ", s)
>>> print s2
'first line'
'hello world again'