日志文件的正则表达式捕获精确单词

时间:2012-12-12 10:39:55

标签: regex

我正在尝试在日志文件中捕获确切的单词:

/Emergency|Critical|Error|BEA-000331/

问题是例如我有Error来捕获 但这也捕获了ErrorUnable。我只想在空间看到它时捕获。我也在寻找BEA-000331 但是捕获了BEA的所有内容。

2 个答案:

答案 0 :(得分:1)

如果您在perl / ruby​​中,请添加单词boundary marker \ b以仅匹配单词边界。此外,如果BEA-000331必须作为一个单元匹配,请尝试将其放在括号中: -

/\b(Emergency|Critical|Error|(BEA-000331))\b/

答案 1 :(得分:0)

使用\b

  

匹配单词字符(任何匹配的字符)之间的位置   \ w)和非单词字符(任何与[^ \ w]或\ W匹配的)   如果是第一个和/或最后一个,则在字符串的开头和/或结尾处   字符串中的字符是单词字符。

'\bEmergency\b|\bCritical\b|\bError\b|\bBEA-000331\b'

根据您使用的工具,您可以这样:

grep -Ew 'Emergency|Critical|Error|BEA-000331' log

-w选项强制模式仅匹配整个单词。