2012-12-03 3 views
2

Я пытаюсь создать регулярное выражение, чтобы соответствовать чему-либо еще, кроме ACTIONLOGDIR = "/ vz/actionlog". До сих пор я придумал следующее:regex, чтобы соответствовать любому другому, чем ACTIONLOGDIR = "/ vz/actionlog"

^(?:(?!ACTIONLOGDIR="/vz/actionlog)).*$ 

К сожалению, это также не соответствует некоторым вещам, которые он должен. Например:

ACTIONLOGDIR="/vz/actionlog" - not matching, this is OK 
ACTIONLOGDIR="/vz/blabla" - matching, is OK 
ActionLogDir="/vz/actionlog" - matching, is OK 
ACTIONLOGDIR="/vz/actionLOG" - matching, is OK 
ActionLogDir="/vz/actionLOG" - matching, is OK 
VIRTUOZZO="/var/actionlog" - matching, is OK 
ACTIONLOGDIR="/vz/actionlog"""""" - this is not matching, it should 
ACTIONLOGDIR="/vz/actionlog"ACTIONLOGDIR="/vz/actionlog" - this is not matching either 

Я также попытался использовать:

^(?:(?!ACTIONLOGDIR="/vz/actionlog))["]{1}$ 

и несколько других вариантов ... Но это ничего не соответствует.

Чтобы быть более конкретным, я ищу имя переменной, если оно совпадает в первую очередь, оно должно искать значение после знака равенства и видеть, является ли оно правильным.

Любая помощь очень ценится.

ответ

4

Ну, ясно понял, не уверен ли я, что вы хотите, чтобы соответствовать, но вы можете попробовать это регулярное выражение, которое будет работать для строк, которые вы выложили: -

"(?!ACTIONLOGDIR=\"/vz/actionlog\"$).*" 
+0

+1. Вы также можете удалить группу, не связанную с захватом, вокруг функции lookahead, здесь она не имеет никаких функций. – stema

+0

@stema .. Да точно. Спасибо, что заметили. :) –

+0

Да, это именно то, что я искал, большое спасибо! –

Смежные вопросы