【发布时间】:2017-07-02 16:26:05
【问题描述】:
这里是 Python 新手,使用 3.5。我觉得这个问题与此处提出的其他问题相似,但是尽管阅读了这些问题并尝试遵循给出的建议,但我仍然无法使用这个正则表达式。
我有一个文本字符串,其中我想用空格替换所有不跟另一个换行符或三个空格的换行符。我正在尝试使用带有负前瞻的正则表达式来做到这一点。我了解到我需要使用来自this conversation 的多行。尽管如此,我的正则表达式并没有在我的字符串中识别任何内容。基本上,我想匹配并替换下面字符串中间的 \r\n ,同时保持字符串开头和结尾的那些不变。
body = 'foo foo\r\n\xa0\xa0\xa0foo foo foo\r\n\foo foo foo foo foo\r\n\r\n\foo foo foo'
breakRegex = re.compile(r'(\r\n)?!(\r\n)|(\r\n)?!(\s\s\s)', s,re.M)
breakRegex.sub(' ', body)
理想的和迄今为止未达到的结果是:
'foo foo\r\n\xa0\xa0\xa0foo foo foo foo foo foo foo foo\r\n\r\n\foo foo foo'
我也试过上面没有那么多括号,用 \s 代替 \xa0 等等,但它仍然不起作用......感谢您提供的任何帮助。
【问题讨论】:
-
如果有多个换行符彼此相邻,您希望它们全部保留,除了最后一个之外都保留,还是只剩下一个?
-
为什么最后一个换行符(
\r\n\r\n\foo foo foo)没有被删除? -
感谢您的回复!好问题,我的计划(和我)没有充分考虑......我认为如果删除额外的 \r\n 以便只剩下一个,实际上会更好,尽管最初我希望它们保留(尽管我的方法不正确)。