我想使用正则表达式从文本中删除一个以specefic单词开头的段落。 假设我们有Lorem存有文本,我们要删除我使用python第一款(http://en.lipsum.com/feed/html)从specefic文本开始的正则表达式的正则表达式
,我想:
t = r"^Lorem ipsum.*\n\n"
text.replace(t,"")
没有发生在文本。我的问题不是关于python,而是关于正则表达式匹配以某些词开头的段落。
我想使用正则表达式从文本中删除一个以specefic单词开头的段落。 假设我们有Lorem存有文本,我们要删除我使用python第一款(http://en.lipsum.com/feed/html)从specefic文本开始的正则表达式的正则表达式
,我想:
t = r"^Lorem ipsum.*\n\n"
text.replace(t,"")
没有发生在文本。我的问题不是关于python,而是关于正则表达式匹配以某些词开头的段落。
这很大程度上取决于您对“段落”的定义 - 它是由空行分隔的行序列吗?大多数正则表达式处理工具都是面向行的,它们逐行处理文本,所以它们可能无法像您期望的那样工作。这也适用于Python re
库,但它提供了一些方法 - 在你的情况下,re.sub('^Lorem ipsum.*?\n\n', '', text, flags=(re.S | re.M))
应该完成这项工作(请注意text.replace
根本不适用于正则表达式)。
这工作,如果文本是足够短,但对于长文,你应该使用一些不同的方法 - 我自己会用awk
,别人可能会建议perl
,python
可太习惯;更简单的正则表达式工具,如grep
或sed
可能在这里没有出现。
如果段落中有换行符(它仅适用于单行段落),则您的正则表达式将不起作用。尝试以下正则表达式:^Lorem ipsum[\s\S]*\n\n
。请参阅http://regex101.com/r/fF9uZ6
您应该添加'?'懒惰匹配而不是贪婪。 –
问题是'text.replace()'不能与正则表达式一起工作。 – 4m1nh4j1