2013-07-28 41 views
1

我要尋找從我的本地mysql.log文件恢復的變化來進行生產服務器,我已經使用了變化:正則表達式不包括子模式

^.*(ALTER TABLE).*(ADD|DROP|CHANGE|^AUTO_INCREMENT).*$ 

..我也會收到CREATE TABLE聲明,不包括SHOW CREATE TABLECREATE TABLE IF NOT EXISTS。於是,我就首先不僅避免了SHOW,但我不使用在我的腦海中更直觀的方式的強校:

^.*(^SHOW)*(CREATE TABLE).*$ 

^.*(^SHOW CREATE TABLE|CREATE TABLE).*$ 

任何幫助表示讚賞,

胭脂紅Iaciofano

+0

如果我認爲是egrep支持,請查看否定後向斷言? –

回答

2

似乎負面的外觀aheads和後面可以用來解決你的問題。在這種情況下,以下正則表達式應該完成這項工作。

(?<!SHOW)(CREATE TABLE)(?! IF) 

在這種情況下,它發現任何「CREATE TABLE」前面沒有「SHOW」或後面跟着「IF」的實例。請注意組中的空格。

然後可以使用

^.*(?<!SHOW)(CREATE TABLE)(?! IF).* 

整個線相匹配。

您可以閱讀預覽,然後看看here

+0

..太棒了!有用。我在很多方面嘗試了負向預覽,但我在「SHOW」之後錯過了空間。我會關心你附加的鏈接並將學習。謝謝! – user1508429