正则表达式的常用方法和属性

正则表达式的常用方法和属性


常用方法:

 

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     指定忽略语言中的区域性差异 "

posted @ 2010-01-16 23:49  dzqabc  阅读(4063)  评论(0编辑  收藏  举报