我在 QTP 中使用 VBscript,我有点困惑:
Browser("name:=.*") //works
为什么Browser("name:=*")
不工作?为什么会有.
人物?
谢谢!
虽然普通通配符(例如在 shell 中用于一次指定多个文件的通配符——例如*.txt
)仅使用 askterisk ( *
) 作为零个或多个任意字符的符号,但在正则表达式中它是一个量词。它告诉正则表达式引擎一些关于前面标记的信息。点 ( .
)匹配单个任意字符,点后跟星号从而匹配零个或多个任意字符。
但是,a=
后跟 a*
将匹配 0 个或多个等号 ( =
) — 因为星号始终适用于前面的标记,这只是这里的等号。
注意:一个标记可以是很多东西,单个字符,=
如 这允许您可以定义更丰富的表达式类型,而不仅仅是普通的旧通配符。.
\w
[a-z]
(abc)
abcabcabc
通常,通配符和正则表达式之间的以下等价性成立——大约;有一些细节可能不会立即显而易见:
Wildcard Regex
-------- -----
* .*
? .
[a-z] [a-z]
*
意思是:匹配一个表达式,其中从左边的字符出现*
0 次或多次。 .
意思是“匹配任何字符”。所以.*
意味着:匹配任何字符 0 次或更多次。在你的第二个表达式中,* 之前有一个等号,所以它的意思是:匹配 0 个或多个等号。
无非就是一份 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 代码。