원문은 다음과 같이 단순화되었습니다(여러 테이블 생성 문, 일부 테이블에는 동일한 필드가 있음).
으아악테이블에 field2
필드가 있는 테이블 생성 문을 선택해야 합니다. 즉, 다음 텍스트를 선택하세요
규칙적인 규칙CREATE_.{-}F_class_type_.{-}ENGINE
을 생각했는데, 분명히 뭔가 문제가 있는 것 같습니다.
선택한 텍스트에 CREATE
하나만 있도록 제한을 추가하여 선택한 텍스트가 올바르도록 하는 방법입니다. 감사해요.
직접 확인해 보세요. 부정적인 시선을 사용하세요.
ringa_lee2017-05-16 16:42:06
일반 규칙을 다시 확인한 결과 부정적인 탐색을 사용하면 이 문제를 해결할 수 있다는 것을 알았습니다.
먼저 올바른 정규 표현식을 붙여넣으세요: vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*
vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*
解释一下,也方便以后自己查看v
:任何元字符都不用加反斜杠_.
:包括换行符的所有字符(CREATE)@!
:顺序否定环视(_.(CREATE)@!){-}
:非贪婪匹配任意字符,并且匹配出的结果中不含有CREATE
字符串
使用否定环视后就能保证匹配出的结果只有一个CREATE
v
: 모든 메타 문자에는 백슬래시가 필요하지 않습니다.🎜_.
: 줄바꿈을 포함한 모든 문자🎜( CREATE)@!
: 순차적 부정 탐색🎜(_.(CREATE)@!){-}
: 모든 문자에 대한 욕심 없는 일치, 일치된 결과에는 다음이 포함되지 않습니다. 생성
문자열🎜
🎜부정 탐색을 사용하면 일치하는 결과에 하나의 CREATE
문자열만 포함되도록 할 수 있습니다. 즉, 일치하는 결과에 여러 개의 테이블 생성 문이 포함되지 않습니다🎜漂亮男人2017-05-16 16:42:06
또 다른 아이디어: 宏
应该也可以
:vim some.sql
/field2
qa{V}:w! >> wanted.sql
nq
99@a
:h {
99@a
中的99
可以通过 %/field2//n
를 사용하여 世界只因有你2017-05-16 16:42:06
무심코 하나 써서 숭고하게 시험에 합격했어요. 참고:
CREATE TABLE .*s.*`field2`[sS]*?ENGINE=InnoDB