2010-01-24 2 views
2

내가 QTP에서 VBScript를 사용하고 난 조금 혼란 스러워요 :의 VBScript 정규식 질문

Browser("name:=*") 작동하지 않는 이유는 무엇입니까? 문자가 . 인 이유는 무엇입니까?

감사합니다. (예 : 한 번-E에. g을 많은 파일을 지정하는 쉘에 사용되는. *.txt을)를 일반 와일드 카드는 0 개 이상의 임의의 문자에 대한 표시로 만 askterisk (*)를 사용하는 동안

답변

8

는 정규 표현식에서이다 a quantifier. 그것은 에 대해 토큰 앞의 정규식 엔진에 알려줍니다. dot (.)은 임의의 단일 문자와 일치하며 점 다음에 별표가 붙어있어 0 개 이상의 임의 문자와 일치합니다.

그러나, * 다음에 = 별표는 언제나 등호 (=) 여기에 서명입니다 이전 토큰에서 작동부터 - 0 이상 징후 (=)를 동일 일치합니다.

참고 : 토큰은 ., \w 또는 [a-z], 그룹 다음 abcabcabc 같은 문자열, & C 일치하는 것 같은 (abc) 많은 것들의 = 같은 단일 문자, 문자 클래스가 될 수 있습니다. 이렇게하면 평범한 예전의 와일드 카드보다 훨씬 풍부한 표현식을 정의 할 수 있습니다.

일반적으로 와일드 카드와 정규 표현식 간의 다음 등가성은 유지됩니다. 즉시 명확하지 않을 수있는 몇 가지 세부 사항이 있습니다

Wildcard  Regex 
--------  ----- 
*    .* 
?    . 
[a-z]   [a-z] 
+0

감사합니다. 어떻게 엔진에서 그 텍스트 안에 모든 내용을 "blah"로 받아 들여야한다고 말할 수 있습니까? – Thomas

+0

그냥 "blah"입니다. 일반 문자와 숫자는 메타 문자가 아니며 정확하게 일치합니다. – Joey

+0

사실 나는 QTP가 암시 적으로 표현을 고정 시켜서. * blah. *'(확인하고보아야 함)라고 생각합니다. – Motti

2

* 수단은 다음 *에서 왼쪽에있는 문자가 0 번 이상 나타나는 위치 식을 일치합니다. .은 '모든 문자와 일치'를 의미합니다. 그래서 .* 의미 : 0 번 이상 문자를 매치합니다. 두 번째 표현식에서 * 앞에 등호가 있으므로 0 이상의 등호를 찾습니다.

1

QTP 도움말 페이지의 사본을 넘지 않습니다.

특수 문자 및 시퀀스는 정규 표현식의 패턴 작성에 사용됩니다. 다음 표에서는 사용할 수있는 문자 및 시퀀스의 예를 설명하고 제공합니다.

문자 설명

\ 특수 문자 나 문자 중 하나와 다음 문자를 표시합니다. 예를 들어, "n"은 문자 "n"과 일치합니다. "\ n"은 개행 문자와 일치합니다. 서열 "\"일치 "\"를 "("일치 "(".

는^입력의 시작과 일치.

$ 입력의 끝과 일치.

* 앞의 문자와 일치 제로 예를 들어, "zo *"는 "z"또는 "zoo"와 일치합니다.

+ 앞의 문자와 한 번 이상 일치합니다.예를 들어, "zo +"는 "zoo"와 일치하지만 "z"와는 일치하지 않습니다.

? 앞의 문자를 0 번 또는 1 번 일치시킵니다. 예를 들어, "아?" "결코"의 "ve"와 일치합니다.

. 개행 문자를 제외한 모든 단일 문자와 일치합니다.

(패턴) 패턴과 일치하고 일치하는 내용을 기억합니다. Matched 하위 문자열은 Item [0] ... [n]을 사용하여 결과로 얻은 Matches 컬렉션에서 검색 할 수 있습니다. 괄호 문자()와 일치 시키려면 "("또는 ")"를 사용하십시오.

x | y x 또는 y와 일치합니다. 예를 들어 "z | wood"는 "z"또는 "wood"와 일치합니다. "(z | w) oo"는 "동물원"또는 "나무"와 일치합니다.

{n} n은 음수가 아닌 정수입니다. 정확히 n 번 일치합니다. 예를 들어 "o {2}"는 "Bob"의 "o"와 일치하지 않지만 "foooood"의 처음 두 개의 o는 일치합니다.

{n,} n은 음수가 아닌 정수입니다. 적어도 n 번 일치합니다. 예를 들어 "o {2,}"는 "Bob"의 "o"와 일치하지 않으며 "foooood"의 모든 o와 일치합니다. "o {1,}"은 "o +"와 같습니다. "o {0,}"은 "o *"와 같습니다.

{n, m} m 및 n은 음이 아닌 정수입니다. 적어도 n 번 이상 m 번 일치합니다. 예를 들어 "o {1,3}"은 "fooooood"의 처음 세 개의 o와 일치합니다. "o {0,1}"은 "o?"와 동일합니다.

[xyz] 문자 집합입니다. 둘러싸인 문자 중 하나와 일치합니다. 예를 들어, "[abc]"는 "plain"의 "a"와 일치합니다.

[^ xyz] 음수 문자 집합입니다. 동봉되지 않은 문자와 일치합니다. 예를 들어 "[^ abc]"는 "plain"의 "p"와 일치합니다.

[a-z] 범위의 문자. 지정된 범위의 모든 문자와 일치합니다. 예를 들어, "[a-z]"는 "a"에서 "z"범위의 소문자 영문자와 일치합니다.

[^ m-z] 음수 범위 문자입니다. 지정된 범위 이외의 문자와 일치합니다. 예를 들어, "[m-z]"는 "m"에서 "z"까지의 범위에없는 문자를 찾습니다.

\ b 단어 경계, 즉 단어와 공백 사이의 위치와 일치합니다. 예를 들어 "er \ b"는 "never"의 "er"과 일치하지만 "verb"의 "er"은 일치하지 않습니다.

\ B 단어가 아닌 경계와 일치합니다. "ea * r \ B"는 "never early"의 "ear"와 일치합니다.

\ d 숫자 문자와 일치합니다. [0-9]와 같습니다.

\ D 숫자가 아닌 문자와 일치합니다. [^ 0-9]와 같습니다.

\ f 서식 지정 문자와 일치합니다.

\ n 개행 문자와 일치합니다.

\ r 캐리지 리턴 문자와 일치합니다.

\ s "[\ f \ n \ r \ t \ v]"와 같은 공백, 탭, 서식 입력 등의 공백과 일치합니다.

\ S 비백 공백 문자와 일치합니다. "[^ \ f \ n \ r \ t \ v]"와 동일합니다.

\ t 탭 문자와 일치합니다.

\ v 세로 탭 문자와 일치합니다.

\ w 밑줄을 포함한 모든 단어 문자와 일치합니다. "[A-Za-z0-9_]"와 동일합니다.

\ W 단어가 아닌 문자와 일치합니다. "[^ A-Za-z0-9_]"와 동일합니다.

\ num num과 일치합니다. 여기서 num은 양의 정수입니다. 기억 된 일치에 대한 참조. 예를 들어 "(.) \ 1"은 두 개의 연속 된 동일한 문자와 일치합니다.

\ n n과 일치합니다. 여기서 n은 8 진수 이스케이프 값입니다. 8 진수 이스케이프 값은 1, 2 또는 3 자리 길이 여야합니다. 예를 들어, "\ 11"과 "\ 011"는 모두 탭 문자와 일치합니다. "\ 0011"은 "\ 001"& "1"과 같습니다. 8 진수 이스케이프 값은 256을 초과 할 수 없습니다. 그렇다면 처음 두 자리 만 표현식을 구성합니다. 정규 표현식에서 ASCII 코드를 사용할 수 있습니다.

\ xn n과 일치합니다. 여기서 n은 16 진수 이스케이프 값입니다. 16 진수 이스케이프 값은 정확히 2 자리 길이 여야합니다. 예를 들어, "\ x41"은 "A"와 일치합니다. "\ x041"은 "\ x04"& "1"과 같습니다. 정규 표현식에서 ASCII 코드를 사용할 수 있습니다.