2013-01-15 3 views
1

내가 예를 들어 문자열이 있습니다일치 및 바꾸기 단어

one two three four START four five four five six END seven 

내가 교체로 교체하는 그 단어 "네"를 검색하려면를이 줄 것이다

one two three four START REPLACED five REPLACED five six END seven 

나는 START(.*)END이 사이의 단어와 구분 기호를 줄 것을 안다. START(?<four>)END을 시도했지만 아무 것도 제공하지 않습니다.

저는 VBScript에서 작업하고 있습니다.

답변

5

(?<name>은 명명 된 그룹입니다.

실제로 필요한 조건을 충족시키지 않고 사전 조건 및 사후 조건 START.*.*END과 일치하는 미리보기 및 뒤 엉뚱한 어설 션이 필요합니다.

Dim input = "one two three four START four five four five six END seven" 
Dim output = Regex.Replace(input, "(?<=START.*)four(?=.*END)", "test") 

수율 : one two three four START test five test five six END seven

+0

고마워 gregmac, 응용 프로그램에서 Expresso (정규식을 테스트하기 위해) 작동하지만 내 코드에서 사용할 때 정규식 구문 오류가 발생합니다. 처음부터 "<"를 제거하면 오류가 제거되지만 정규 표현식이 망가집니다. 이 오류가 발생하는 이유를 알고 있습니까? – TheBlainer

+0

죄송합니다. 분명히 vbscript는 lookbehind 어설 션을 지원하지 않습니다. 이 경우 실제로는 단일 정규 표현식으로이 작업을 수행 할 수있는 방법이 없습니다. START와 END 사이에 하위 일치를 수행 한 다음 정기적으로 대체해야합니다. vbscript로 붙어 있습니까? FWIW, vbscript는 [dead] (http://en.wikipedia.org/wiki/Vbscript#History)이고 [.NET 1.1은 lookbehind 어설 션을 지원합니다] (http://msdn.microsoft.com/en-us/library) /bs2twtah(v=vs.71).aspx). – gregmac

+0

이 프로젝트에서는 최신 버전이 .Net으로 만들어 졌기 때문에 C# .Net으로 전환 할 수 없습니다. 난 아직도 그것을 사용하는 클라이언트에 대한 이전 버전을 유지해야합니다. 하지만 자바 스크립트로 처리 할 수 ​​있다는 것을 알았습니다 (웹이라고 말한 것을 잊었습니다). 나는 그 등가물을 찾아야 만합니다. – TheBlainer

0

왜 정규식을 사용 하시겠습니까?

Dim oldStr = "one two three four START four five four five six END seven" 

Dim newStr = oldStr.Replace("four", "REPLACED") 
+1

내가 원하지 않는 모든 "네"를 교체하기 만 두 단어 사이의 그. – TheBlainer

+1

이것은 시작하기 전에 네 가지를 대체합니다. – AutomatedChaos