2017-06-05 4 views
0

Wie kann ich SQL-Anweisungen in Notepad ++ "blockieren"?Wie Kommentar SQL-Anweisungen in Notepad ++?

Zum Beispiel:

CREATE TABLE gmr_virtuemart_calc_categories ( id int(1) UNSIGNED NOT NULL, virtuemart_calc_id int(1) UNSIGNED NOT NULL DEFAULT '0', virtuemart_category_id int(1) UNSIGNED NOT NULL DEFAULT '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Es soll mit /* am Anfang und */ am Ende mit regex in Notepad gewickelt wird ++ zu produzieren:

/*CREATE TABLE ... (...) ENGINE=MyISAM DEFAULT CHARSET=utf8;*/

+0

Vielen Dank für die Klärung meiner Frage! – gba

Antwort

1

Sie bieten Eingabe einer Probe nur ersetzen, so dass ich das Muster buchstäblich zu bauen gezwungen. Wenn dieses Muster nicht geeignet ist, weil es alternative Abfragen und/oder anderen störenden Text gibt, dann aktualisieren Sie bitte Ihre Frage. Aktivieren Sie das Kästchen "Groß-/Kleinschreibung beachten".

Suchen nach: (CREATE[^;]+;) Ersetzen durch: /*$1*/

Andernfalls können Sie diese für SQL-Abfrageblöcke verwenden, die mit einem Kapital und Ende in Semikolon beginnen:

Suchen nach: ([A-Z][^;]+;) Ersetzen durch: /*$1*/

Um die Genauigkeit zu verbessern, könnten Sie ^ Start der Linie Anker oder \r\n nach dem Semikolon oder hinzufügen passe den CHARSET-Teil vor dem Semikolon an. Es gibt mehrere Anpassungen, die vorgenommen werden können. Ich kann mir der Genauigkeit nicht sicher sein, ohne mehr über den größeren Text zu wissen.

+0

Finden Sie was: '(CREATE [^;] +;)' Ersetzen durch: '/ * $ 1 * /' funktioniert perfekt für mich, und ist ein bisschen einfacher für mich zu fangen - danke! – gba

0

Sie könnten eine verwenden rekursive Regex.
Ich denke, NP verwendet Boost oder PCRE.
Dies funktioniert mit beiden.

https://regex101.com/r/P75bXC/1

Finden (?s)(CREATE\s+TABLE[^(]*(\((?:[^()']++|'.*?'|(?2))*\))(?:[^;']|'.*?')*;)
/*$1*/

Explained

(?s)       # Dot-all modifier 
(        # (1 start) The whole match 
     CREATE \s+ TABLE [^(]* # Create statement 
     (        # (2 start), Recursion code group 
      \(
      (?:       # Cluster group 
       [^()']++      # Possesive, not parenth's or quotes 
      |        # or, 
       ' .*? '      # Quotes (can wrap in atomic group if need be) 
      |        # or, 
       (?2)       # Recurse to group 2 
      )*        # End cluster, do 0 to many times 
      \) 
    )        # (2 end) 
            # Trailer before colon statement end 
     (?:       # Cluster group, can be atomic (?>) if need be 
      [^;']       # Not quote or colon 
     |        # or, 
      ' .*? '      # Quotes 
    )*        # End cluster, do 0 to many times 
     ;        # Colon at the end 
)        # (1 end) 
+0

@gba - Warum, gern geschehen! Ich hoffe, es hat für dich funktioniert. Es ist einfach erstaunlich, wie sie diese Dinge analysieren, nicht wahr? Könnte auch 'CREATE [^;] +;'? ~? – sln