моят код анализира някои редове в лог файл.
правя много неща с това, но се появи особена нужда да мога да намеря ред, който не съдържа определен подниз. при определено условие
разбирам доста добре регулярните изрази. но не мога да разбера това.
проблемът: искам да заснема всеки ред, който не съдържа думата error
или warn
. освен ако не е първата част от записа в журнала и е ограден с квадратни скоби.
досега опитах нещо подобно:
(((?:abc|cba)\s+.*(?!\[?(?!error|warn)\]?).*)|((abc|cba)\s+\[(error|warn)\]\s+(.*)))
редовете в дневника могат да изглеждат като някои от тези примери:
група за улавяне 2:
abc [error] message
cba [error] message
cba [warn] message
група за улавяне 1:
abc something random
cba i dont know
не заснемане:
abc some [error] message
cba some [warn] message
проблемът на по-прост английски; Искам да получа всеки ред, който започва с abc
или cba
. група за улавяне 1 трябва да вземе реда, ако няма [error]
или [warn]
никъде в него. и група за улавяне 2 трябва да го получи само ако [error]
или [warn]
са първата част от записа (след abc
или cba
)