Регулярное выражение для совпадения строк без определенного слова

Я пытаюсь создать регулярное выражение, которое вычисляет только строки, не содержащие определенного слова в начале строки. В моем случае "демон:".

My regex: (?!d)(?!e)(?!a)(?!m)(?!o)(?!n)(?!:).*\n

Но это также соответствует остальной части строки после «deamon:», чего я не хочу.

Ввод:

deamon: parsing arguments...
deamon: parsing xml file...
deamon: creating xml file for demo...
deamon: executing demo
parsing arguments...
path to xml: /home/www/www/seg-chapter/tests/users/1/launches/60/demo.xml
parsing xml file...

Соответствие:

parsing arguments...
parsing xml file...
creating xml file for demo...
executing demo
parsing arguments...
path to xml: /home/www/www/seg-chapter/tests/users/1/launches/60/demo.xml
parsing xml file...

Я хочу только:

parsing arguments...
path to xml: /home/www/www/seg-chapter/tests/users/1/launches/60/demo.xml
parsing xml file...

Кто-нибудь знает, как сопоставлять только строки без "deamon:" в начале строк?


person Petr Přikryl    schedule 22.02.2013    source источник


Ответы (1)


str.match( /^(?!deamon:).*/mg )

Многострочный флаг m означает, что ^ соответствует началу каждой строки, а не только началу строки.
(?!deamon:) — это отрицательный просмотр вперед, который предотвращает совпадение, если строка начинается с deamon:.

person MikeM    schedule 22.02.2013