정규식 - vim에서 정규식 찾기
天蓬老师
天蓬老师 2017-05-16 16:40:06
0
3
581

원문은 다음과 같이 단순화되었습니다(여러 테이블 생성 문, 일부 테이블에는 동일한 필드가 있음).

으아악

테이블에 field2 필드가 있는 테이블 생성 문을 선택해야 합니다. 즉, 다음 텍스트를 선택하세요

으아악

규칙적인 규칙CREATE_.{-}F_class_type_.{-}ENGINE을 생각했는데, 분명히 뭔가 문제가 있는 것 같습니다.

선택한 텍스트에 CREATE 하나만 있도록 제한을 추가하여 선택한 텍스트가 올바르도록 하는 방법입니다. 감사해요.


직접 확인해 보세요. 부정적인 시선을 사용하세요.

天蓬老师
天蓬老师

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

모든 응답(3)
左手右手慢动作

일반 규칙을 다시 확인한 결과 부정적인 탐색을 사용하면 이 문제를 해결할 수 있다는 것을 알았습니다.
먼저 올바른 정규 표현식을 붙여넣으세요: vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*vCREATE(_.(CREATE)@!){-}field2_.{-}ENGINE.*

解释一下,也方便以后自己查看
v:任何元字符都不用加反斜杠
_.:包括换行符的所有字符
(CREATE)@!:顺序否定环视
(_.(CREATE)@!){-}:非贪婪匹配任意字符,并且匹配出的结果中不含有CREATE字符串

使用否定环视后就能保证匹配出的结果只有一个CREATE

설명하면 나중에 확인하는 것도 편리합니다.🎜v: 모든 메타 문자에는 백슬래시가 필요하지 않습니다.🎜_.: 줄바꿈을 포함한 모든 문자🎜( CREATE)@!: 순차적 부정 탐색🎜(_.(CREATE)@!){-}: 모든 문자에 대한 욕심 없는 일치, 일치된 결과에는 다음이 포함되지 않습니다. 생성문자열🎜 🎜부정 탐색을 사용하면 일치하는 결과에 하나의 CREATE 문자열만 포함되도록 할 수 있습니다. 즉, 일치하는 결과에 여러 개의 테이블 생성 문이 포함되지 않습니다🎜
漂亮男人

또 다른 아이디어: 应该也可以

 :vim some.sql
 /field2
 qa{V}:w! >> wanted.sql
 nq
 99@a
  • 前提是每个创建语句行间不能有空行,首尾要有空行, 参见 :h {
  • 99@a 中的99 可以通过 %/field2//n를 사용하여
  • 를 얻으세요.
世界只因有你

무심코 하나 써서 숭고하게 시험에 합격했어요. 참고:

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿