正则表达式的常用方法和属性
正则表达式的常用方法和属性
常用方法:
1 、 Execute 方法
描述:对指定的字符串执行正则表达式搜索。
语法: object.Execute(string) Execute 方法的语法包括以下几个部分:
object :必需的。总是一个 RegExp 对象的名称。
string :必需的。要在其上执行正则表达式的文本字符串。
说明:正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。 Execute 方法返回一个
Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配, Execute 将返回空的 Matches 集合。
2 、 Test 方法
描述:对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。
语法: object.Test(string)
Test 方法的语法包括以下几个部分:
object :必需的。总是一个 RegExp 对象的名称。
string :必需的。要执行正则表达式搜索的文本字符串。
说明:正则表达式搜索的实际模式是通过 RegExp 对象的 Pattern 属性来设置的。 RegExp.Global 属性对 Test 方法没有影响。如果找到了匹配的模式, Test 方法返回 True ;否则返回 False 。
常用属性:
1 、 Global 属性
描述:设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。
语法: object.Global [= True | False ]
object 参数总是 RegExp 对象。如果搜索应用于整个字符串, Global 属性的值为 True ,否则其值为 False 。默认的设置为 True 。
2 、 IgnoreCase 属性
描述:设置或返回一个 Boolean 值,指明模式搜索是否区分大小写。
语法: object.IgnoreCase [= True | False ]
object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False ;否则为 True 。缺省值为 True 。
3 、 Pattern 属性
描述:设置或返回被搜索的正则表达式模式。 这是一个最重要的属性,我们主要是设置这个属性来实现数据校验的。
语法: object.Pattern [= "searchstring"]
Pattern 属性的语法包含以下几个部分:
object :必需的。总是一个 RegExp 对象变量。
searchstring :可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。
从其他文章转来的补充的应用实例:
最近在用 VB6 解决一个网页解析的应用,涉及到了正则。如何在 VB6 中使用正则表达式,这个在 MS 网站上有介绍,不过介绍的不是很全面。下面结合 MS 网站的内容和搜索到的东西,自己汇总一下。
引用了 Microsoft VBScript Regular Expressions 5.5 后就可以声明正则相关对象了。主要有三个对象: RegExp 、 MatchCollection 、 Match 。
4.Multiline
修饰的是 ^ 与 $
Multiline 为 False 时,把 ^ 和 $ 与当作每一行 (\n 结尾的 ) 的开头和结束来匹配,
有 Multiline 为 True 时,是与整个字符串的开头和结尾匹配;
Singleline 与 Multiline 根本就是不沾边的,没有互斥的关系。
Singleline
修饰的是 '.'
Singleline 为 False 时,匹配的是除 \n 外的所有字符,即搜索到行结束时便停止该次匹配
Singleline 为 True 的时候匹配的是所有字符(包 括 \n ),即可以跨越行进行某次匹配
<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->
DEELX 正则表达式匹配模式
DEELX 匹配模式
DEELX 支持的匹配模式有: IgnoreCase, Singleline, Multiline, Global, RightToLeft, Extended 这 6 种模式以及它们的组合。
说明
IGNORECASE
匹配时忽略大小写。默认情况下,正则表达式是要区分大小写的。不管是否指定忽略大小写模式,字符类,比如 [A-Z] 是要区分大小写的。
SINGLELINE
使小数点 "." 可以匹配包含换行符( \n )在内的任意字符。默认情况下,小数点只匹配换行符以外的任意字符,不匹配换行符。
MULTILINE
使 ^ 符号除了能够匹配字符串开始位置外,还能匹配换行符( \n )之后的位置;使 $ 符号除了能够匹配字符串结束位置外,还能匹配换行符之前的位置。默认情况下, ^ 符号只能匹配字符串开始位置, $ 符号只能匹配字符串结束位置。
SINGLELINE 和 MULTILINE 虽然听起来相互矛盾,但却是作用在不同的地方。因此它们是可以组合使用的。
在指定了 MULTILINE 之后,如果需要仅匹配字符串开始和结束位置,可以使用 \A 和 \Z 。
GLOBAL
使 \G 可以用来匹配本次查找匹配的开始位置,对于连续的匹配来说,也就是上次匹配的结束位置。默认情况下, \G 没有作用。
DEELX 在进行替换操作( Replace )时,不管是否指定 GLOBAL 模式, DEELX 都可以进行所有的替换。是否指定 GLOBAL 模式只是对 \G 起作用。如果希望进行有限次数的替换,可在替换操作时指定替换次数。
RIGHTTOLEFT
从右向左的进行匹配。从被匹配字符串的结束位置向前进行查找匹配,同时,在表达式中也是右侧的表达式先进行匹配。
表达式的写法仍然按原来的习惯:匹配次数修饰符( *, +, {n}, ……)仍然位于被修饰部分的右侧而不是左侧; ^ 仍然匹配文本开始而不是文本结束; (?=xxx) 仍然是正向与搜索(向右预搜索),而不是向左;分组( group )编号仍然是从左向右进行编号;等等。
不管整个表达式是否指定了 RightToLeft 模式, " 反向预搜索(反向零宽度断言) " 内的表达式始终采用 RightToLeft 模式。
EXTENDED
使 DEELX 忽略表达式中的空白字符,并且把从 # 开始到该行行末的内容视为注释。默认情况下,正则表达式中的空格,换行等字符将可以匹配相应的字符。指定了 EXTENDED 模式后,如果要在正则表达式中表示空白字符比如空格符号( space )时,应该用 \x20 表示,如果要在表达式中表示 # 符号,应该用 \# 表示。
不管是否指定了 EXTENDED 模式,括号内以 ?# 号开始时,比如 (?# xxx ) ,那么这一对括号以及包含的内容都始终作为注释而被忽略。
Compiled
指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。 ( 在针对同一正则匹配执行多次时使用可以减少执行时间 )
ExplicitCapture
指定有效的捕获仅为形式为 (?<name>...) 的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。
IgnorePatternWhitespace
消除模式中的非转义空白并启用由 # 标记的注释。但是, IgnorePatternWhitespace 值不会影响或消除字符类中的空白。
<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->
"ExplicitCapture 指定有效的捕获仅为形式为 (?<name>...) 的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...)"
"Compiled 指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。在调用 CompileToAssembly 方法时,不应将此值分配给 Options 属性 "
"Singleline 指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。 "
"IgnorePatternWhitespace 消除模式中的非转义空白并启用由 # 标记的注释。但是, IgnorePatternWhitespace 值不会影响或消除字符类中的空白。 "
"RightToLeft 指定搜索从右向左而不是从左向右进行。 "
"ECMAScript 为表达式启用符合 ECMAScript 的行为。该值只能与 IgnoreCase 、 Multiline 和 Compiled 值一起使用。该值与其他任何值一起使用均将导致异常。 "
"CultureInvariant 指定忽略语言中的区域性差异 "