2016-12-23 6 views
-1

Regex에 대한 지원을 찾고 있습니다. 저는 VBA 매크로를 작성하여 문구를 찾고/대체하여 수십만 개의 문서를 업데이트하는 프로젝트를 가지고 있습니다. 구문은 "회사 이름"이며 "회사 이름 LLP"여야합니다. 문제는 찾기/바꾸기로 인해 "회사 이름 LLP"가 이전에 업데이트 된 경우 "회사 이름 LLP LLP"(2 개의 LLP)이되는 것을 방지 할 수 없다는 것입니다. 내 해결 방법은 "LLP LLP"를 찾아 "LLP"로 바꾸는 것이지만 Regex를 사용하는 것이 더 좋은 방법입니다. 나는 "Company Name"이 이미 "Company Name LLP"가 아닌 곳 ("Company Name, LLP"을 쉼표로 제외하는 것이 더 좋다)을 찾은 정규식을 원합니다. 아무도이 정규식을 구축 도와주세요 수 있습니까? 티아!Regex가 아직 업데이트되지 않은 문구를 찾았습니다.

+2

사용'회사 명 (?! \ S + LLP)은' –

+0

안녕 Wiktor는 빠른 답장을 보내 주셔서 감사합니다! 대/소문자를 구분하지 않고 "회사 이름"도 찾을 수있는 방법이 있습니까? – JBHorne

+0

정규식 개체에 대소 문자를 구분할 수 있습니다. –

답변

1

당신은 Company Name 1+ 전에 공백을 일치 피하기 위해 (?!\s+LLP) 부정적 예측을 사용할 수와 LLC 단어 : 다음은 전체 단어 인 경우

Company Name(?!\s+LLP) 

는 단어 경계로 묶

\bCompany Name\b(?!\s+LLP\b) 

으로 대/소문자를 구분하지 않고 대/소문자를 구분하지 않는 모드로 RegExp 개체를 설정합니다.

예 :

Set myRegExp = New RegExp 
myRegExp.IgnoreCase = True 'Here, case insensitive mode is ON 
myRegExp.Global = True 
myRegExp.Pattern = "\bCompany Name\b(?!\s+LLP\b)" 
+0

고마워요. 나는 이제 "Company Name, LLP"(쉼표로)를 제외하려고합니다. "\ b 회사 이름 및 이름 \ b (?! \ s + LLP | \, LLP \ b)"을 사용하고 있습니다. 이것이 가장 좋은 접근 방법입니까 아니면 더 우아한 방법입니까? 여기에 Regex를 처음 접했을 때 ... 마지막으로 "회사 및 이름"또는 "회사 및 이름"을 찾는 방법이 있습니까? 나는 시도했다 : "\ bCompany (& | and) Name \ b"그러나 중간에 괄호가 다른 일치를 생성하고있다. – JBHorne

+0

'(?,? \ s + LLP \ b)'가 더 좋고,'and'와'&'를 모두 일치 시키려면'(? : and | &)'를 사용하십시오. '\ bCompany \ s + (?:와 | &) \ s + Name \ b (?,? \ s + LLP \ b)' –

+0

위키 백과, 당신이 굉장합니다. 이것은 나이를 알아내는 데 걸렸을 것입니다. 마지막 정규식은 다음과 같습니다. \ bCompany (? : and | &) Name \ b (?,? \ s + LLP \ b) 고마워요! – JBHorne