元のテキストは次のように簡略化されています (複数のテーブル作成ステートメント、一部のテーブルには同じフィールドがあります):
リーリーテーブル内に field2
フィールドがあるテーブル作成ステートメントを選択する必要があります。つまり、次のテキストを選択します
規則的なルールCREATE_.{-}F_class_type_.{-}ENGINE
を考えたのですが、これは明らかに何かが間違っています。
選択したテキストに CREATE
が 1 つだけ含まれるように制限を追加して、選択したテキストが正しくなるようにする方法。ありがとう。
自分でチェックしてください。周りを否定的に見てください。
通常のルールを再度確認したところ、negative lookaround を使用するとこの問題を解決できることがわかりました。
最初に正しい正規表現を投稿してください:
vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*
説明してください。後で確認するときにも便利です
v
: メタ文字にはバックスラッシュは必要ありませんv
:任何元字符都不用加反斜杠_.
:包括换行符的所有字符(CREATE)@!
:顺序否定环视(_.(CREATE)@!){-}
:非贪婪匹配任意字符,并且匹配出的结果中不含有CREATE
_.
: 改行を含むすべての文字>( CREATE)@!
: 逐次否定検索
🎜ネガティブ ルックアラウンドを使用すると、一致結果に 🎜 文字列が 1 つだけ含まれるようになります。つまり、一致結果に複数のテーブル構築ステートメントが含まれないようになります🎜(_.(CREATE)@!){-}
: 任意の文字の非貪欲一致、および一致結果には次の文字列が含まれないCREATE
文字列別のアイデア:
も使用できるはずです リーリー宏
:h {
を参照してください。99@a
中的99
可以通过%/field2//n
ゲット何気なく書いたところ、見事にテストに合格しました。参考: