匹配第一个词和最后一个词之间的文本

时间:2019-06-24 18:45:50

标签: regex

我想创建一个跨多行匹配的正则表达式。此正则表达式应以匹配以Email开头的行开始,并以匹配以=开头的行结束,并且它应包括匹配中的所有行。示例:

输入:

scrambled text asdasdad
qwert asd

Email: johndoe@john.com
John is an emplyer
john's number is +146546****
============================

gabrish

匹配:

Email: johndoe@john.com
John is an emplyer
john's number is +146546****
============================

2 个答案:

答案 0 :(得分:0)

有多种方法可以为此任务设计一个表达式,我想这也许是我们感兴趣的表达式,

Email:[\s\S]*?=.+\s*

带有m(多行)标志:

Demo 1

如果最后一个=之后可能没有空格,我们可以将其删除并将其简化为:Email:[\s\S]*?=.+


另一种方法是使用s(单行)标志,我们将从类似以下的表达式开始:

Email.*?=+

Demo 2

答案 1 :(得分:0)

尝试一下:

content.replaceAll("^(?!(EMAIL|=).+).+$", "");