正则表达式文字

时间:2010-05-10 19:47:57

标签: regex

因为我是RegEx阅读障碍...您可以使用什么RegEx来查找以下每个字符串 - “LoginException”除外?

NullPointerException
LoginException
BooException
Abc123Exception

编辑:要清楚,我正在文本/日志文件中查找这些字符串。

3 个答案:

答案 0 :(得分:4)

假设PCRE(Perl-Compatible RegEx)类似语法(即grep -P):

\b(?!LoginException\b)\w*Exception\b

示例:

echo "NullPointerException LoginException BooException Abc123Exception LoginFooException" |
grep -P '\b(?!LoginException\b)\w*Exception\b'

答案 1 :(得分:2)

您可以使用negative lookahead

(?!Login)\b\w+Exception

您可以使用Perl执行此操作:

perl -ne 'print if /(?!Login)\b\w+Exception/' < mylog.log

答案 2 :(得分:2)

通常,当您想要一个与特定字符串或模式之外的任何内容匹配的正则表达式时,反转测试意义几乎总是更直接。因此,不是“这是一个模式,我希望匹配除 XYZ 之外的任何东西”,而是检查XYZ是否匹配并丢弃正数。

如果您只想要这三个,请使用

$ egrep '(NullPointer|Boo|Abc123)Exception' input.log

您可能可以使用两阶段管道,例如

$ grep Exception input.log | grep -v LoginException