为什么下面的正则表达式不能用于下面的文本
正则表达式:
(?=.*\berror\b)(?=.*\balarm\b).*
文字:
ns1.alarm.abc
ns2.error.cdb
在其他作品中如何进行多行正则表达式匹配?
答案 0 :(得分:0)
我认为您正在尝试查找包含error
或alarm
的字符串,为此您可以尝试以下操作:
试试这个正则表达式:
(?=.*\b(?:error|alarm)\b).*
<强>解释强>
(?=.*\b(?:error|alarm)\b)
- 检查是否存在字的正面预测 - error
或 alarm
.*
- 如果满足上述条件,则匹配所有字符的出现次数(换行符除外)您的正则表达式(?=.*\berror\b)(?=.*\balarm\b).*
不起作用,因为它试图在同一行/输入字符串中找到单词error
和alarm
。因此,您需要如上所示放置OR条件。
<强>更新强>
要匹配两者,请使用此功能。
(?=[\s\S]*\berror\b)(?=[\s\S]*\balarm\b)[\s\S]*
如HERE