【问题标题】:Removing phrase/sentence that \r\n is located randomly (R / Python)删除 \r\n 随机定位的短语/句子(R / Python)
【发布时间】:2016-06-24 05:37:41
【问题描述】:

如何删除\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 immediatelyPlease contact\r\nme immediatelyPlease contact me\r\n immediatelyPlease contact me\r\nimmediately去掉这句话。但是如果我想删除一个较长的句子,就像我的第一个例子一样,我不能写出所有可能的变化。

总而言之,我如何删除具有相同单词但在所有不同位置都有 \r\n 的短语和句子?

【问题讨论】:

  • 根据这些句子出现的空间不应该有\r\n 吗?

标签: python regex r


【解决方案1】:

此正则表达式模式将查找所有段落(而不是句子):

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

试试看@Live Demo

说明:

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

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

查找与上述模式匹配的附加行

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

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

(?=[\n\r])

第 2 组和第 3 组组合起来相当于段落的最后一行。

【讨论】:

    【解决方案2】:

    试试这个。

    $ 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,它将被视为相同。

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多