2017-06-05 21 views
0

Notepad ++で「コメント」SQL文をどのようにブロックできますか?例えばメモ帳でメモを取る方法++?

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;

それが生成するために、メモ帳++で正規表現を使用して最後に開始し、*//*でラップする必要があります。

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

+0

私の質問を明確にしていただきありがとうございます! – gba

答えて

1

を交換し(?s)(CREATE\s+TABLE[^(]*(\((?:[^()']++|'.*?'|(?2))*\))(?:[^;']|'.*?')*;)
を探すあなたは唯一のサンプル入力を提供しますので、私は、文字通りのパターンを構築することを強制しています。代替パターンやその他の干渉テキストがあるため、このパターンが適切でない場合は、質問を更新してください。 [大文字小文字を区別する]チェックボックスをオンにします。

検索する文字:(CREATE[^;]+;)と交換してください:

は何を探す:そうでなければ/*$1*/

、あなたはセミコロンで資本と終わりで始まるSQLクエリ・ブロックのためにこれを使用することができます/*$1*/

([A-Z][^;]+;)はと交換します

精度を向上させるには、^開始点のアンカーを含めるか、セミコロンの後に\r\nを追加するか、セミコロンの前のCHARSET部分に一致します。いくつかの調整が可能です。私は、より大きな本文についてもっと知ることなく、正確さを確信することはできません。

+0

次のものを見つけてください: '(CREATE [^;] +;)'と置き換えて: '/ * $ 1 * /'は私にとって完璧に機能します。 – gba

0

あなたが使用することができます再帰的正規表現。
私はNPがブーストまたはPCREを使うと思います。
これは両方で動作します。

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

/*$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 - なぜ、ようこそ!私はそれがあなたのために働くことを望む。これらのことをどうやって解析するのかちょっと驚きましたね?おそらく 'CREATE [^;] +;'?〜? – sln