2

我在 QTP 中使用 VBscript,我有点困惑:

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

为什么Browser("name:=*")不工作?为什么会有.人物?

谢谢!

4

3 回答 3

8

虽然普通通配符(例如在 shell 中用于一次指定多个文件的通配符——例如*.txt)仅使用 askterisk ( *) 作为零个或多个任意字符的符号,但在正则表达式中它是一个量词。它告诉正则表达式引擎一些关于前面标记的信息。点 ( .)匹配单个任意字符,点后跟星号从而匹配零个或多个任意字符。

但是,a=后跟 a*将匹配 0 个或多个等号 ( =) — 因为星号始终适用于前面的标记,这只是这里的等号。

注意:一个标记可以是很多东西,单个字符,=如 这允许您可以定义更丰富的表达式类型,而不仅仅是普通的旧通配符。.\w[a-z](abc)abcabcabc

通常,通配符和正则表达式之间的以下等价性成立——大约;有一些细节可能不会立即显而易见:

Wildcard        Regex
--------        -----
*               .*
?               .
[a-z]           [a-z]
于 2010-01-24T19:19:19.710 回答
3

*意思是:匹配一个表达式,其中从左边的字符出现*0 次或多次。 .意思是“匹配任何字符”。所以.*意味着:匹配任何字符 0 次或更多次。在你的第二个表达式中,* 之前有一个等号,所以它的意思是:匹配 0 个或多个等号。

于 2010-01-24T19:20:02.897 回答
2

无非就是一份 QTP 帮助页面的副本。

特殊字符和序列用于编写正则表达式的模式。下表描述并给出了可以使用的字符和序列的示例。

人物描述

\ 将下一个字符标记为特殊字符或文字。例如,“n”匹配字符“n”。"\n" 匹配换行符。序列“\”匹配“\”,“(”匹配“(”。

^ 匹配输入的开头。

$ 匹配输入的结尾。

* 匹配前面的字符零次或多次。例如,“zo*”匹配“z”或“zoo”。

+ 匹配前面的字符一次或多次。例如,“zo+”匹配“zoo”但不匹配“z”。

? 匹配前面的字符零次或一次。例如,“a?ve?” 匹配“never”中的“ve”。

. 匹配除换行符以外的任何单个字符。

(pattern) 匹配模式并记住匹配。可以使用 Item [0]...[n] 从生成的 Matches 集合中检索匹配的子字符串。要匹配括号字符 ( ),请使用 "(" 或 ")"。

x|y 匹配 x 或 y。例如,“z|wood”匹配“z”或“wood”。"(z|w)oo" 匹配 "zoo" 或 "wood"。

{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”。

[az] 一系列字符。匹配指定范围内的任何字符。例如,“[az]”匹配“a”到“z”范围内的任何小写字母字符。

[^mz] 负范围字符。匹配不在指定范围内的任何字符。例如,“[mz]”匹配不在“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 是八进制转义值。八进制转义值的长度必须为 1、2 或 3 位。例如,“\11”和“\011”都匹配一个制表符。“\0011”相当于“\001”和“1”。八进制转义值不得超过 256。如果超过,则只有前两位数字构成表达式。允许在正则表达式中使用 ASCII 代码。

\xn 匹配 n,其中 n 是十六进制转义值。十六进制转义值必须正好是两位数。例如,“\x41”匹配“A”。"\x041" 等价于 "\x04" & "1"。允许在正则表达式中使用 ASCII 代码。

于 2010-01-26T14:16:54.263 回答