2013-07-26 2 views
0

& 태그 사이에있는 문자를 찾으려면이 패턴을 사용하고 싶습니다. 태그 사이의 자리수는 가변적입니다 (때로는 5, 때로는 5-4, 때로는 9). 기본적으로 태그 사이에 숫자가 필요합니다. 때로는 내 텍스트 파일이 태그 사이에 공백이나 문자로 나에게 올 수 있습니다.특정 태그 사이의 알파 문자 및 공백 일치

스크립트에서 원하는 것은 태그 사이에 문자 [a-zA-Z]가있는 횟수를 계산하는 것입니다. 0을 찾으면 0을보고합니다.

현재 테스트 텍스트 파일에 두 개의 우편 번호 태그가 있습니다 ... 두 태그 사이에 숫자 만 있습니다. (이쪽은 우수합니다) 아래 스크립트 또는 패턴이 0으로 표시되어야합니다. 찾았습니다. (문자가 없기 때문에) 그러나 그것은 다시보고합니다 2. 마치 거꾸로입니다. 태그 중 하나에 문자를 넣으면 아래의 패턴이 1을보고합니다. 마치 패턴이 거꾸로 된 것처럼 보입니다. [^ 0-9]로 변경하면 글자 나 숫자 또는 둘 모두가 있으면 아무 것도 없습니다. . 정규식 그룹에서 보통

Set rgxp3 = New Regexp 
rgxp3.Pattern = "<ZipCode>([^a-zA-Z]*)</ZipCode>" 
rgxp3.IgnoreCase = False 
rgxp3.Global = True 
Set matches3 = rgxp3.Execute(contents) 
+0

영문자와 일치 시키려고하지만 샘플 문자열에는 숫자와 하이픈 만 있습니다.또한 패턴과 샘플 문자열이 대소 문자가 일치하지 않을 때 대/소문자를 구분하여 정규 표현식을 사용하게됩니다. 한 걸음 물러나서이 정규식을 적용하여 해결하려는 실제 문제를 설명하십시오. –

+0

Ansgar 나는 현재 내가 가지고있는 패턴을 업데이트했다. zipcode 태그 사이에있을 때만 대문자 또는 소문자를 찾고 싶습니다. 내가 만드는 스크립트는 형식이 올바른지 확인하는 것입니다. 형식에는 태그 사이에 문자를 사용할 수 없습니다. 그래서이 스크립트를 실행할 때 검색이 태그 사이에 0 개의 문자로 나타나기를 원할 것입니다. 스크립트가 발생을보고하면 내 긴 텍스트 파일의 어딘가에 많은 우편 번호 태그 중 하나에 문자가 들어 있습니다. 숫자와 하이픈은 괜찮습니다. 인내심을 가져 주셔서 감사합니다. – user2150312

답변

0

마지막 댓글에 따르면 태그의 값에 문자가있는 일치 항목을 찾고 싶습니다. <zipcode>123c456</zipcode>. 이것을 시도하십시오 :

str = "..." 

Set re = New RegExp 
re.Pattern = "<zipcode>(.*?[a-z].*?)</zipcode>" 
re.Global = True 
re.IgnoreCase = True 

For Each m In re.Execute(str) 
    WScript.Echo m.SubMatches(0) 
Next 
+0

바로 감사의 표현이 필요합니다. 여기에 넣어야할지 모르겠지만 어퍼 & 소문자 및 공백을 확인하는 표현식을 " (. *? [a-zA-Z]. *?)"으로 지정했습니다. 다시 한 번 감사드립니다! – user2150312

0

는 문 (내에서 부품을 추출하는 데 사용되는이 [괄호()를 사용] 그래서이 문제를 해결하기 위해

당신은 정규식 문자열을 작성합니다 같은;

<zipcode>([\da-zA-Z]{5}-[\da-zA-Z]{4})</zipcode> 

(이 정규식 문자열은 5 개의 영숫자 문자와 그 뒤에 하이픈 (-), 4 개의 영숫자 문자 순으로 찾습니다 (미국인이 아니기 때문에 우편 번호의 가능한 형식은 분명하지 않지만 아마도 그것을 검색하여 그 부분에 대한 정규식을 찾으십시오.)

우리 식에서 괄호 안의 부분은 그룹으로 추출 할 수 있습니다. 우리가 하나 개의 그룹을 가지고

[\da-zA-Z]{5}-[\da-zA-Z]{4} 

이 보통 그룹으로 언급 될 것이다 그래서 샘플의 첫 번째 표현식을 사용하여 0

;

<zipcode>12345-1234</zipcode> 

및 그룹 0을 반환하면됩니다.

12345-1234 

나는 VBScript를 익숙하지 않은, 그래서 내가 직접 대답 할 수없는,하지만이 답변이 VBScript를에서 서브 일치를 추출하는 방법을 설명하기 위해 나타납니다; 당신이 당신의 정규 표현식에를 테스트하려면 Regular Expression - How to find a match within a match?

, 당신은 당신이 작동하지 뭐죠 확인하기 위해 표현의 부품을 테스트 할 수 있도록 실시간으로 일치되는 내용 강조, 같은 RegexPal 같은 테스트 도구를 사용합니다. http://regexpal.com/ 또 다른 좋은 정보원은 정규식 참조입니다.이 페이지는 기본 정규식 기능에 대한 많은 참조 정보를 보유하고 있습니다. enter link description here

+0

적어도 뭔가를 가져 주셔서 감사 드리며, 나는 당신이 말하는 것을 좀 이해합니다 ... 나는 성취하기가 어려울 것이라는 것을 몰랐습니다. 이 우편 번호가 텍스트에 여러 가지 방법이있을 수 있습니다. 하이픈 (5 자리) - (4 자리), 하이픈 (12345) 또는 (123456789) 모든 숫자를 가질 수 없습니다. 어떤 글자라도 있으면 그 글자를 세고 싶습니다. 선택적 하이픈을 (\ -) 넣을 수 없습니까? – user2150312

+0

[-]를 사용 하시겠습니까? 선택적 하이픈, 공백 또는 문자 없음. []는 허용되는 문자의 문자 클래스를 만듭니다. ? 선택 사항으로 만듭니다. – Robadob

+0

다시 한번 나는 도움에 매우 감사 드리며, 이것은 현재 (나는 노력하고있다) 그 순간 내 머리 위로 끝나지 만, ... 말하기는 안전합니까, 태그 사이에 아무것도 허용하지 않는 간단한 방법은 없습니다. 제외 [ a-zA-Z]? – user2150312

관련 문제