多线正则表达式匹配

时间:2017-11-09 02:08:05

标签: regex

为什么下面的正则表达式不能用于下面的文本

正则表达式:

(?=.*\berror\b)(?=.*\balarm\b).*

文字:

ns1.alarm.abc 
ns2.error.cdb

在其他作品中如何进行多行正则表达式匹配?

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试查找包含erroralarm的字符串,为此您可以尝试以下操作:

试试这个正则表达式:

(?=.*\b(?:error|alarm)\b).*

Click for Demo

<强>解释

  • (?=.*\b(?:error|alarm)\b) - 检查是否存在的正面预测 - error alarm
  • .* - 如果满足上述条件,则匹配所有字符的出现次数(换行符除外)

您的正则表达式(?=.*\berror\b)(?=.*\balarm\b).*不起作用,因为它试图在同一行/输入字符串中找到单词erroralarm。因此,您需要如上所示放置OR条件。

<强>更新

要匹配两者,请使用此功能。

(?=[\s\S]*\berror\b)(?=[\s\S]*\balarm\b)[\s\S]*HERE

所示