我正在尝试在日志文件中捕获确切的单词:
/Emergency|Critical|Error|BEA-000331/
问题是例如我有Error
来捕获
但这也捕获了ErrorUnable
。我只想在空间看到它时捕获。我也在寻找BEA-000331
但是捕获了BEA
的所有内容。
答案 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
选项强制模式仅匹配整个单词。