删除\ r \ n随机定位的短语/句子(R / Python)

时间:2016-03-09 17:26:37

标签: python regex r

如何删除\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的短语和句子?

2 个答案:

答案 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

Paragraph

说明:

在一行或多行上查找([1个或多个非换行符]后跟[换行符])

(?:[^\n\r]+[\n\r])+

查找与上述模式相匹配的其他行

(?:[^\n\r]+[\n\r])

查找其他[换行符]
IE:两组文本之间的空白

(?=[\n\r])

第二&第三组合并等于该段的最后一行。