从特定文本开始的段落的正则表达式

时间:2014-02-19 10:01:50

标签: regex

我想使用正则表达式从文本中删除以specefic单词开头的段落。 想象一下,我们有lorem ipsum文本,我们想删除第一段(http://en.lipsum.com/feed/html

我正在使用python,我试过了:

t = r"^Lorem ipsum.*\n\n"
text.replace(t,"")

案文没有发生任何事情。我的问题不是关于python,而是关于匹配以某些单词开头的段落的正则表达式。

2 个答案:

答案 0 :(得分:0)

如果您的段落中有换行符,则您的正则表达式无法正常工作(它仅适用于单行段落)。请尝试以下正则表达式:^Lorem ipsum[\s\S]*\n\n。见http://regex101.com/r/fF9uZ6

答案 1 :(得分:0)

这在很大程度上取决于你对“段落”的定义 - 它是由空行分隔的一系列行吗?大多数正则表达式处理工具都是面向行的,它们逐行处理文本,因此它们可能无法正常工作。这也适用于Python re库,但它提供了相应的方法 - 在您的情况下,像re.sub('^Lorem ipsum.*?\n\n', '', text, flags=(re.S | re.M))这样的工作应该完成工作(注意text.replace根本不能与regexp一起使用)

如果文字足够短,这是有效的,但对于长文本,你应该采用一种不同的方法 - 我自己会使用awk,其他人可能会建议perlpython可能是也用过;更简单的仅限正则表达式的工具(例如grepsed)可能不在此处。