如何删除\r\n
位于所有不同位置的短语或句子?
例如,我想删除这样的句子:
If you are having trouble viewing this message or would like to share
it on a social network, you can view the message online.
但这句话有许多不同的变体,如:
If
you are having trouble viewing this message or would like to share
it on a social network, you can view the message online.
或
If you are having trouble
viewing this message or would like to share
it on a social network, you can view the message online.
我试图指定正则表达式中的每个变体,但是当句子或短语很短时就可以了。
例如,如果我要删除Please contact me immediately
我可以指定Please\r\ncontact me immediately
Please contact\r\nme immediately
Please contact me\r\n immediately
Please contact me\r\nimmediately
来删除此句子。但是,如果我想删除一个比我的第一个例子更长的句子,我就不能写出所有可能的变化。
总之,如何删除具有相同单词但在所有不同位置都有\ r \ n的短语和句子?
答案 0 :(得分:1)
试一试。
$ import re
$ remove_text = lambda x, y: re.sub('\s?\r?\n?'.join(x.split()), "", y)
$ remove_text("Please contact me immediately", "Hello Please contact\r\nme immediately World")
> 'Hello World'
您也可以稍后删除多余的空格。
$ re.sub('\s+', ' ', remove_text("Please contact me immediately", "Hello Please contact\r\nme immediately World"))
> 'Hello World'
此方法有其局限性,如果您的实际文字为Pleasecontact meimmediately
,则会将其视为相同。
答案 1 :(得分:1)
这个正则表达式模式将找到所有段落(而不是句子):
((?:[^\n\r]+[\n\r])+(?:[^\n\r]+[\n\r])(?=[\n\r]))
尝试@ Live Demo
在一行或多行上查找([1个或多个非换行符]后跟[换行符])
(?:[^\n\r]+[\n\r])+
查找与上述模式相匹配的其他行
(?:[^\n\r]+[\n\r])
查找其他[换行符]
IE:两组文本之间的空白
(?=[\n\r])
第二&第三组合并等于该段的最后一行。