2016-09-23 3 views
3

아래 예제에서 "CAST"와 "DATETIME"단어 사이에있는 하이픈을 각각 어떻게 일치시킬 수 있습니까? (CAST(N'2013-11-26 10:52:47.957' AS DateTime))두 개의 특정 단어 사이에 하이픈 일치하는 정규식

패턴은 행당 여러 번 발생합니다. 일치하지 않아야하는 문자열의 다른 모든 부분에 하이픈이있을 수 있습니다.

INSERT [dbo].[tbl_Content] ([Template], [CreatedDate], [Url], [PublishedDate]) VALUES (N’gallery-item.aspx', CAST(N'2013-11-26 10:52:47.957' AS DateTime), N'some-url', CAST(N'2013-11-26 00:00:00.000' AS DateTime)) 
INSERT [dbo].[tbl_Content] ([Template], [CreatedDate], [Url], [PublishedDate]) VALUES (N’another-item.aspx', CAST(N'2013-11-26 10:52:47.957' AS DateTime), N'some-other-url', CAST(N'2013-11-26 00:00:00.000' AS DateTime)) 

CAST(.*)DateTime는 "CAST"의 첫번째 발생하고, 각 행의 "DATETIME"마지막 발생 사이의 모든 문자를 선택한다. 이 선택 항목에는 일치 시켜서는 안되는 다른 하이픈이있을 수 있습니다.

-은 문서의 하이픈과 일치합니다.

나는이 두 패턴을 어떻게 든 결합해야하지만 내 정규식 지식은 존재하지 않는다고 생각합니다. CAST(-)DateTime이 작동하지 않습니다.

올바른 방법은 무엇입니까?

플랫폼이 중요한 경우 : Visual Studio Code에서 찾기를 바꾸는 데 사용됩니다. 이것이 가능하지 않다면 다른 텍스트/코드 편집기를 사용할 수 있습니다.

+0

을 일치합니다. –

+0

안녕하세요 @ WiktorStribiżew, 나는 이것을 Visual Studio Code의 찾기 - 바꾸기에서 사용하고 싶습니다. 나는 그들이 배경에서 어떤 라이브러리를 사용하는지 전혀 모르겠다. – Turnip

+0

VSC는 ECMAScript 5 정규 표현식을 사용하기 때문에 죄송하지만 불가능합니다. –

답변

1

메모장 + +를 사용할 수있는 경우 \G 연산자를 기반으로하는 정규식을 사용하면 초기 일치 후 연속 일치를 쉽게 찾을 수 있습니다.

사용

(?:\bCAST\b|(?!^)\G)(?:(?!\b(?:DATETIME|CAST)\b)[^-])*\K- 

및 심볼 (들)은 (괄호 NPP 교체 패턴에서 탈출해야 기억) 원하는 교체. 아래에서 -§으로 바꿨습니다.

세부 :

  • (?:\bCAST\b|(?!^)\G) - 전체 단어 CAST 또는 이전 경기
  • (?:(?!\b(?:DATETIME|CAST)\b)[^-])*의 끝 위치 - 어떤 문자 만 - ([^-] 참조)과 일치하는 강화 욕심 토큰하지 않습니다 일련의 전체 단어 DATETIME 또는 CAST을 시작하십시오 (부정적인 표제 참조 (?!\b(?:DATETIME|CAST)\b) 참조)
  • \K - a 경기 리셋 opeator은 : 지금까지 일치하는 모든 텍스트는
  • -
  • 을 폐기 - 하이픈 우리가 사용하고있는 도구/정규식 라이브러리에 따라

enter image description here

+1

그것은 치료를했다. 고맙습니다. 4000+ insert 문을 편집해야하는 번거 로움을 덜어 줬습니다. – Turnip

관련 문제