Rumah > Soal Jawab > teks badan
Teks asal dipermudahkan seperti berikut (beberapa pernyataan penciptaan jadual, sesetengah jadual mempunyai medan yang sama):
CREATE TABLE `test1` (
`field1` int,
) ENGINE=InnoDB
CREATE TABLE `test2` (
`field1` int,
) ENGINE=InnoDB
CREATE TABLE `test3` (
`field2` int,
) ENGINE=InnoDB
CREATE TABLE `test4` (
`field3` int,
) ENGINE=InnoDB
CREATE TABLE `test5` (
`field2` int,
) ENGINE=InnoDB
Saya perlu memilih pernyataan penciptaan jadual yang mempunyai field2
medan dalam jadual, iaitu pilih teks berikut
CREATE TABLE `test3` (
`field2` int,
) ENGINE=InnoDB
CREATE TABLE `test5` (
`field2` int,
) ENGINE=InnoDB
Saya memikirkan peraturan biasaCREATE_.{-}F_class_type_.{-}ENGINE
, tetapi jelas ada yang tidak kena dengan ini.
Bagaimana untuk menambah sekatan supaya hanya ada satu CREATE
dalam teks yang dipilih, supaya teks yang dipilih adalah betul. terima kasih.
Semak sendiri, cuma gunakan pandangan negatif.
ringa_lee2017-05-16 16:42:06
Saya menyemak peraturan biasa sekali lagi dan mendapati bahawa menggunakan tinjauan negatif boleh menyelesaikan masalah ini.
Tampalkan ungkapan biasa yang betul dahulu: vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*
vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*
解释一下,也方便以后自己查看v
:任何元字符都不用加反斜杠_.
:包括换行符的所有字符(CREATE)@!
:顺序否定环视(_.(CREATE)@!){-}
:非贪婪匹配任意字符,并且匹配出的结果中不含有CREATE
字符串
使用否定环视后就能保证匹配出的结果只有一个CREATE
(_.(CREATE)@!){-}
: Tidak tamak padanan mana-mana aksara dan hasil yang dipadankan tidak mengandungi BUAT
String🎜
🎜Menggunakan tinjauan negatif boleh memastikan bahawa hasil padanan hanya akan mempunyai satu rentetan CREATE
, iaitu, hasil padanan tidak akan mempunyai berbilang kenyataan penciptaan jadual🎜漂亮男人2017-05-16 16:42:06
Idea lain: gunakan 宏
应该也可以
:vim some.sql
/field2
qa{V}:w! >> wanted.sql
nq
99@a
:h {
99@a
中的99
可以通过 %/field2//n
untuk mendapatkan世界只因有你2017-05-16 16:42:06
Saya menulis satu secara santai dan lulus ujian dengan cemerlang. Untuk rujukan:
BUAT JADUAL .*s.*`field2`[sS]*?ENGINE=InnoDB