正規表現 - vim で正規表現を検索します。
天蓬老师
天蓬老师 2017-05-16 16:40:06
0
3
588

元のテキストは次のように簡略化されています (複数のテーブル作成ステートメント、一部のテーブルには同じフィールドがあります):

リーリー

テーブル内に field2 フィールドがあるテーブル作成ステートメントを選択する必要があります。つまり、次のテキストを選択します

リーリー

規則的なルールCREATE_.{-}F_class_type_.{-}ENGINEを考えたのですが、これは明らかに何かが間違っています。

選択したテキストに CREATE が 1 つだけ含まれるように制限を追加して、選択したテキストが正しくなるようにする方法。ありがとう。


自分でチェックしてください。周りを否定的に見てください。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(3)
左手右手慢动作

通常のルールを再度確認したところ、negative lookaround を使用するとこの問題を解決できることがわかりました。
最初に正しい正規表現を投稿してください: vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*

説明してください。後で確認するときにも便利です
v: メタ文字にはバックスラッシュは必要ありませんv:任何元字符都不用加反斜杠
_.:包括换行符的所有字符
(CREATE)@!:顺序否定环视
(_.(CREATE)@!){-}:非贪婪匹配任意字符,并且匹配出的结果中不含有CREATE_.: 改行を含むすべての文字

>( CREATE)@!: 逐次否定検索

(_.(CREATE)@!){-}: 任意の文字の非貪欲一致、および一致結果には次の文字列が含まれないCREATE文字列

🎜ネガティブ ルックアラウンドを使用すると、一致結果に 🎜 文字列が 1 つだけ含まれるようになります。つまり、一致結果に複数のテーブル構築ステートメントが含まれないようになります🎜
いいねを押す +0
漂亮男人

別のアイデア:

も使用できるはずです リーリー
  • 各作成ステートメントの行間に空白行があってはならず、先頭と末尾に空白行がなければならないという前提があります。:h {を参照してください。
  • 99@a 中的99 可以通过 %/field2//nゲット
いいねを押す +0
世界只因有你

何気なく書いたところ、見事にテストに合格しました。参考:

CREATE TABLE .*s.*`field2`[sS]*?ENGINE=InnoDB

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート