Вопрос регулярного выражения VBScript (. *) - PullRequest
2 голосов
/ 24 января 2010

Я использую VBscript в QTP, и я немного запутался:

Browser("name:=.*") //works

Почему Browser("name:=*") не работает? Почему существует символ .?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 24 января 2010

В то время как обычные подстановочные знаки (например, используемые в оболочках для указания множества файлов одновременно - например, *.txt) используют только знак вопроса (*) в качестве знака для нуля или более произвольных символов, в регулярных выражениях это квантификатор .Он сообщает движку регулярных выражений что-то о предшествующем токене.Точка (.) соответствует одному произвольному символу, точка, за которой следует звездочка, соответствует нулю или большему количеству произвольных символов.

Однако, за = следует * будет соответствовать 0 или более знакам равенства (=) - поскольку звездочка всегда работает на предшествующем токене, который здесь является просто знаком равенства.

Примечание: токен может бытьмногие вещи, один символ, такой как =, класс символов, такой как ., \w или [a-z], группа, такая как (abc), которая затем будет соответствовать любой строке, такой как abcabcabc, & c.Это позволяет определять гораздо более богатые типы выражений, чем простые старые символы подстановки.

Как правило, выполняются следующие эквивалентности между символами подстановки и регулярными выражениями - приблизительно;Есть некоторые детали, которые могут быть не сразу очевидны:

Wildcard        Regex
--------        -----
*               .*
?               .
[a-z]           [a-z]
2 голосов
/ 24 января 2010

* означает: соответствует выражению, в котором символ слева от * встречается 0 или более раз. . означает «соответствовать любому символу». Таким образом, .* означает: соответствует любому символу 0 или более раз. Во втором выражении перед знаком * стоит знак равенства, что означает: соответствует 0 или более знакам равенства.

1 голос
/ 26 января 2010

Не что иное, как копия страницы справки QTP.

Специальные символы и последовательности используются при написании шаблонов для регулярных выражений. В следующей таблице описаны и приведены примеры символов и последовательностей, которые можно использовать.

Описание символов

\ Помечает следующий символ как специальный символ или литерал. Например, «n» соответствует символу «n». «\ n» соответствует символу новой строки. Последовательность "\" соответствует "\" и "(" соответствует "(".

^ Соответствует началу ввода.

$ Соответствует концу ввода.

* Соответствует предыдущему символу ноль или более раз. Например, «zo *» соответствует «z» или «zoo».

+ Соответствует предыдущему символу один или несколько раз. Например, «zo +» соответствует «zoo», но не «z».

? Соответствует предыдущему символу ноль или один раз. Например, "a? Ve?" соответствует "ve" в "never".

. Соответствует любому отдельному символу, кроме символа новой строки.

(шаблон) Соответствует шаблону и запоминает совпадение. Соответствующую подстроку можно извлечь из результирующей коллекции Matches, используя Item [0] ... [n]. Чтобы сопоставить символы в скобках (), используйте «(» или «)».

x | y Совпадает с x или y. Например, «z | wood» соответствует «z» или «wood». «(z | w) oo» соответствует «zoo» или «wood».

{n} n - неотрицательное целое число. Совпадает ровно n раз. Например, «o {2}» не соответствует «o» в «Bob», но соответствует первым двум «o» в «foooood».

{n,} n - неотрицательное целое число. Совпадает не менее n раз. Например, «o {2,}» не соответствует «o» в «Bob» и соответствует всем «o» в «foooood». «o {1,}» эквивалентно «o +». «o {0,}» эквивалентно «o *».

{n, m} m и n - неотрицательные целые числа. Совпадает не менее n и не более m раз. Например, «o {1,3}» соответствует первым трем «o» в «fooooood». «o {0,1}» эквивалентно «o?».

[xyz] Набор символов. Соответствует любому из вложенных символов. Например, «[abc]» соответствует «a» в «plain».

[^ xyz] Набор отрицательных символов. Соответствует любому символу, не заключенному Например, «[^ abc]» соответствует «p» в «plain».

[a-z] Диапазон символов. Соответствует любому символу в указанном диапазоне. Например, «[a-z]» соответствует любому строчному буквенному символу в диапазоне от «a» до «z».

[^ m-z] Символ отрицательного диапазона. Соответствует любому символу, не входящему в указанный диапазон. Например, «[m-z]» соответствует любому символу, находящемуся вне диапазона от «m» до «z».

\ b Соответствует границе слова, то есть позиции между словом и пробелом. Например, «er \ b» соответствует «er» в «never», но не «er» в «verb».

\ B Соответствует границе без слов. «ea * r \ B» соответствует «уху» в «никогда не рано».

\ 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 - восьмеричное escape-значение. Восьмеричные escape-значения должны быть длиной 1, 2 или 3 цифры. Например, «\ 11» и «\ 011» соответствуют символу табуляции. «\ 0011» является эквивалентом «\ 001» & «1». Восьмеричные escape-значения не должны превышать 256. Если это так, выражение выражается только первыми двумя цифрами. Позволяет использовать коды ASCII в регулярных выражениях.

\ xn Соответствует n, где n - шестнадцатеричное escape-значение. Шестнадцатеричные escape-значения должны быть ровно двухзначными. Например, «\ x41» соответствует «A». «\ x041» эквивалентно «\ x04» & «1». Позволяет использовать коды ASCII в регулярных выражениях.

...