2010-01-24 6 views
2

J'utilise VBscript dans QTP et je suis un peu confus:VBScript regex

Pourquoi Browser("name:=*") ne fonctionne pas? Pourquoi y a-t-il un caractère .?

Merci!

Répondre

8

Alors que les jokers normaux (tels que ceux utilisés dans des coquilles pour spécifier plusieurs fichiers à la fois-e. G. *.txt) utilisent uniquement les askterisk (*) comme un signe pour à zéro ou plusieurs caractères arbitraires, dans les expressions régulières, il est un quantifier. Il indique au moteur regex quelque chose à propos du jeton précédant le jeton. Un dot (.) correspond à un seul caractère arbitraire, un point suivi d'un astérisque correspond donc à zéro ou plusieurs caractères arbitraires.

Cependant, un = suivi d'un * correspondra à 0 ou plus signes égal (=) -Depuis l'astérisque fonctionne toujours sur le précédent jeton, qui est juste le signe égal ici.

Note: Un jeton peut être beaucoup de choses, un seul caractère comme le =, une classe de caractères, tels que ., \w ou [a-z], un groupe tel que (abc) qui serait alors correspondre à une chaîne comme abcabcabc, & c. Cela permet de définir des types d'expressions beaucoup plus riches que les simples caractères génériques.

Généralement, les équivalences suivantes entre les caractères génériques et les expressions régulières sont approximativement équivalentes; il y a quelques détails qui peuvent ne pas être immédiatement évident:

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

Merci. Comment pourrais-je dire au moteur qu'il devrait accepter * blah * signifiant "bla" tout dans le texte – Thomas

+0

Juste "blah". Les lettres et les nombres normaux ne sont pas des métacaractères et correspondent exactement à ce qu'ils sont. – Joey

+0

En fait, je pense que QTP ancre implicitement l'expression de sorte que vous aurez besoin de. * * Bla. * '(Vous devriez vérifier et voir) – Motti

2

Les * signifie: trouver une expression où le caractère à la gauche de la * apparaît 0 fois ou plus. . signifie «correspondre à n'importe quel caractère». Donc, .* signifie: correspondre à tout caractère 0 ou plusieurs fois. Dans votre seconde expression, il y a un signe égal avant le *, cela signifie donc: correspondre à 0 ou plus de signes égaux.

1

Rien de plus qu'une copie de la page d'aide de QTP.

Les caractères spéciaux et les séquences sont utilisés dans l'écriture de motifs pour les expressions régulières. Le tableau suivant décrit et donne un exemple des caractères et des séquences pouvant être utilisés.

Description du caractère

\ marque le caractère suivant soit comme un caractère spécial ou un littéral. Par exemple, "n" correspond au caractère "n". "\ n" correspond à un caractère de nouvelle ligne. La séquence "\" correspond "\" et "(" matchs "(".

^correspond au début de l'entrée.

$ correspond à la fin de l'entrée.

* Correspond au caractère précédent zéro Par exemple, "zo *" correspond à "z" ou "zoo"

+ Correspond au caractère précédent une ou plusieurs fois.Par exemple, "zo +" correspond à "zoo" mais pas à "z".

? Correspond au caractère précédent zéro ou une fois. Par exemple, "a? Ve?" correspond au "ve" dans "jamais".

. Correspond à n'importe quel caractère sauf un caractère de nouvelle ligne.

(motif) Fait correspondre les motifs et mémorise la correspondance. La sous-chaîne correspondante peut être extraite de la collection Matches résultante, en utilisant Item [0] ... [n]. Pour faire correspondre les caractères entre parenthèses(), utilisez "(" ou ")".

x | y Correspond à x ou à y. Par exemple, "z | wood" correspond à "z" ou "wood". "(z | w) oo" correspond à "zoo" ou "bois".

{n} n est un entier non négatif. Correspond exactement à n fois. Par exemple, "o {2}" ne correspond pas à "o" dans "Bob", mais correspond aux deux premiers o de "foooood".

{n,} n est un entier non négatif. Correspond au moins à n fois. Par exemple, "o {2,}" ne correspond pas à "o" dans "Bob" et correspond à tous les o de "foooood". "o {1,}" est équivalent à "o +". "o {0,}" est équivalent à "o *".

{n, m} m et n sont des entiers non négatifs. Correspond au moins à n et au plus à m fois. Par exemple, "o {1,3}" correspond aux trois premiers de "fooooood". "o {0,1}" est équivalent à "o?".

[xyz] Jeu de caractères. Correspond à l'un des caractères inclus. Par exemple, "[abc]" correspond à "a" dans "plain".

[^ xyz] Jeu de caractères négatif. Correspond à tout caractère non inclus. Par exemple, "[^ abc]" correspond au "p" dans "plain".

[a-z] Une plage de caractères. Correspond à n'importe quel caractère dans la plage spécifiée. Par exemple, "[a-z]" correspond à tout caractère alphabétique minuscule compris entre "a" et "z".

[^ m-z] Caractères de plage négative. Correspond à tout caractère qui ne se trouve pas dans la plage spécifiée. Par exemple, "[m-z]" correspond à tout caractère qui n'est pas compris entre "m" et "z".

\ b Correspond à une limite de mot, c'est-à-dire la position entre un mot et un espace. Par exemple, "er \ b" correspond à "er" dans "jamais" mais pas à "er" dans "verbe".

\ B Correspond à une limite de non-mot. "ea * r \ B" correspond à "l'oreille" dans "jamais en avance".

\ d Correspond à un caractère numérique. Équivalent à [0-9].

\ D Correspond à un caractère non numérique. Équivalent à [^ 0-9].

\ f Correspond à un caractère de saut de page.

\ n Correspond à un caractère de retour à la ligne.

Correspond à un caractère de retour chariot.

\ s Correspond à n'importe quel espace blanc, y compris l'espace, la tabulation, le saut de page, etc. Équivalent à "[\ f \ n \ r \ t \ v]".

\ S Correspond à tout caractère espace non blanc. Équivalent à "[^ \ f \ n \ r \ t \ v]".

\ t Correspond à un caractère de tabulation.

\ v Correspond à un caractère de tabulation vertical.

\ w Correspond à n'importe quel caractère de mot, y compris le trait de soulignement. Équivalent à "[A-Za-z0-9_]".

\ W Correspond à tout caractère autre qu'un mot. Équivalent à "[^ A-Za-z0-9_]".

\ num Correspond à num, où num est un nombre entier positif. Une référence à des matchs mémorisés. Par exemple, "(.) \ 1" correspond à deux caractères identiques consécutifs.

\ n Correspond à n, où n est une valeur d'échappement octale. Les valeurs d'échappement octales doivent être de 1, 2 ou 3 chiffres. Par exemple, "\ 11" et "\ 011" correspondent à un caractère de tabulation. "\ 0011" est l'équivalent de "\ 001" & "1". Les valeurs d'échappement octales ne doivent pas dépasser 256. Si c'est le cas, seuls les deux premiers chiffres constituent l'expression. Permet aux codes ASCII d'être utilisés dans les expressions régulières.

\ xn Correspond à n, où n est une valeur d'échappement hexadécimale. Les valeurs d'échappement hexadécimales doivent avoir exactement deux chiffres. Par exemple, "\ x41" correspond à "A". "\ x041" est équivalent à "\ x04" & "1". Permet aux codes ASCII d'être utilisés dans les expressions régulières.