📜  VBScript-正则表达式

📅  最后修改于: 2020-10-19 04:11:13             🧑  作者: Mango


正则表达式是形成模式的字符序列,主要用于搜索和替换。创建模式的目的是匹配特定的字符串,以便开发人员可以根据条件提取字符并替换某些字符。

RegExp对象

RegExp对象可帮助开发人员匹配字符串模式,而属性和方法可帮助我们轻松使用正则表达式。它类似于JavaScript中的RegExp

物产

  • 模式-模式方法代表用于定义正则表达式的字符串,应在使用正则表达式对象之前进行设置。

  • IgnoreCase-一个布尔属性,表示是否应该对字符串中所有可能的匹配(如果为true或false)测试正则表达式。如果未明确指定,则IgnoreCase值设置为False。

  • 全局-一个布尔属性,表示是否应针对字符串中所有可能的匹配项测试正则表达式。如果未明确指定,则全局值设置为False。

方法

  • Test (搜索字符串)-Test方法将字符串作为参数,如果正则表达式可以成功地与字符串匹配,则返回True,否则返回False。

  • 替换(搜索字符串,替换字符串)-替换方法采用2个参数。如果搜索成功,则将其替换为替换字符串,并返回新字符串。如果没有匹配项,则返回原始搜索字符串。

  • Execute (搜索字符串)-Execute方法的作用类似于Replace,不同之处在于它返回Matches集合对象,其中包含每个成功匹配项的Match对象。它不会修改原始字符串。

匹配集合对象

作为Execute方法的结果,返回Matches集合对象。该集合对象可以包含零个或多个Match对象,并且该对象的属性是只读的。

  • Count -Count方法代表集合中匹配对象的数量。

  • Item -Item方法使可以从matchs集合对象访问match对象。

匹配对象

Match对象包含在matchs集合对象中。这些对象表示搜索字符串后的成功匹配。

  • FirstIndex-它表示原始字符串在其中发生匹配的位置。该索引从零开始,这意味着字符串中的第一个位置为0。

  • 长度-代表匹配字符串总长度的值。

  • -代表匹配值或文本的值。也是访问Match对象时的默认值。

关于模式参数的全部

模式构建类似于PERL。在使用正则表达式时,模式构建是最重要的。在本节中,我们将讨论如何基于各种因素创建模式。

位置匹配

位置匹配的意义在于确保将正则表达式放在正确的位置。

Symbol Description
^ Matches only the beginning of a string.
$ Match only the end of a string.
\b Matches any word boundary
\B Matches any non-word boundary

字面量匹配

任何形式的字符(例如字母,数字或特殊字符,甚至十进制,十六进制)都可以视为字面量。由于在正则表达式的上下文中,很少有字符具有特殊含义,因此我们需要使用转义序列对它们进行转义。

Symbol Description
Alphanumeric Matches alphabetical and numerical characters only.
\n Matches a new line.
\[ Matches [ literal only
\] Matches ] literal only
\( Matches ( literal only
\) Matches ) literal only
\t Matches horizontal tab
\v Matches vertical tab
\| Matches | literal only
\{ Matches { literal only
\} Matches } literal only
\\ Matches \ literal only
\? Matches ? literal only
\* Matches * literal only
\+ Matches + literal only
\. Matches . literal only
\b Matches any word boundary
\B Matches any non-word boundary
\f Matches a form feed
\r Matches carriage return
\xxx Matches the ASCII character of an octal number xxx.
\xdd Matches the ASCII character of an hexadecimal number dd.
\uxxxx Matches the ASCII character of an UNICODE literal xxxx.

字符类匹配

字符类是由定制分组形成的模式,并包含在[]大括号内。如果我们期望一个字符类不应该出现在列表中,那么我们应该使用负号(即大写^)忽略该特定字符类。

Symbol Description
[xyz] Match any of the character class enclosed within the character set.
[^xyz] Matches any of the character class that are NOT enclosed within the character set.
. Matches any character class except \n
\w Match any word character class. Equivalent to [a-zA-Z_0-9]
\W Match any non-word character class. Equivalent to [^a-zA-Z_0-9]
\d Match any digit class. Equivalent to [0-9].
\D Match any non-digit character class. Equivalent to [^0-9].
\s Match any space character class. Equivalent to [ \t\r\n\v\f]
\S Match any space character class. Equivalent to [^\t\r\n\v\f]

重复匹配

重复匹配允许在正则表达式中进行多次搜索。它还指定元素在正则表达式中重复的次数。

Symbol Description
* Matches zero or more occurrences of the given regular Expression. Equivalent to {0,}.
+ Matches one or more occurrences of the given regular Expression. Equivalent to {1,}.
? Matches zero or one occurrences of the given regular Expression. Equivalent to {0,1}.
{x} Matches exactly x number of occurrences of the given regular expression.
{x,} Match atleast x or more occurrences of the given regular expression.
{x,y} Matches x to y number of occurences of the given regular expression.

交替与分组

交替和分组可以帮助开发人员创建更复杂的正则表达式,尤其是在处理正则表达式中的复杂子句时,从而提供了极大的灵活性和控制力。

Symbol Description
0 Grouping a clause to create a clause. “(xy)?(z)” matches “xyz” or “z”.
| Alternation combines one regular expression clause and then matches any of the individual clauses. “(ij)|(23)|(pq)” matches “ij” or “23” or “pq”.

建立正则表达式

下面给出的一些示例清楚地说明了如何构建正则表达式。

Regular Expression Description
“^\s*..” and “..\s*$” Represents that there can be any number of leading and trailing space characters in a single line.
“((\$\s?)|(#\s?))?” Represents an optional $ or # sign followed by an optional space.
“((\d+(\.(\d\d)?)?))” Represents that at least one digit is present followed by an optional decimals and two digits after decimals.

下面的示例检查用户是否输入了格式应匹配的电子邮件ID,以使电子邮件ID后面跟有“ @”,然后是域名。