如何在python中解析/替换给定起始匹配条件的字符串的一部分?

时间:2014-04-22 09:43:52

标签: python regex

假设我有这个字符串

text='bla1;\nbla2;\nbla3;\n#endif\nbla4;'

我想定义一种方法,删除所有' \ n' 除了,如果' \ n'之前是一个字符串开头,其中包含'#'或者' \ n'遵循'#',因此该过程的结果应该是:

text2='bla1;bla2;bla3;\n#endif\nbla4;'

使用正则表达式在python中有一种简单的方法吗?

(注意:我很清楚如何避免\ n后跟#,使用负面的后观,即r' \ n +(?!#)'但挑战是如何识别\ n前面是以#)

开头的字符串

挑战是: 如何在python中处理可变长度字符串的正面lookbehind?

1 个答案:

答案 0 :(得分:1)

查找:(#[a-z]+\\n)|\\n(?!#)

并替换为:'\ 1'

输出:bla1;bla2;bla3;\n#endif\nbla4;

演示:http://regex101.com/r/uO8wH2

这将保留所有\n换行符,其前面的单词以#开头,或后跟哈希值。

HTH