正则表达式 学习(一) 元字符

时间:2021-09-19 18:46:30

1.  匹配位置的元字符


匹配位置的元字符包括3个字符:^$/b。其中,^(脱字符号,通常在文章中插入字时使用)和$(美元符号)都匹配一个位置,它们分别匹配行的开始和结尾。以下正则表达式匹配以“String”开头的行,即被匹配的行的第一个字符串为“String”。

^String                                                                       (1)

以下正则表达式匹配以“ String ”结尾的行,即被匹配的行的最后一个字符串为“ String ”。

String$                                                                   (2)

以下正则表达式匹配以“ String ”开始和结尾的行,即被匹配的行的第一个字符串和最后一个字符串都为“ String ”。实际上,该行只包含字符串“ String ”。

^String$                                                                     (3)

以下正则表达式匹配一个空行,该行中不包含任何字符串。
^$                                                                        (4)

  以下正则表达式匹配任意行。该表达式只匹配行中的开始位置,因为任意行都包括其开始位置,所以该表达式将匹配任意行。

^                                                                                   (5)

  元字符/b^$具有相似性,它也是匹配一个位置。/b可以匹配单词的开始或结尾,即单词的分界处。通常情况下,英文单词往往由空格符号或标点符号或换行符号来分隔,但是元字符/b不匹配空格符号、标点符号和换行符号中的任何一个,它仅仅匹配一个位置。以下正则表达式匹配以“Str”开头的字符串,如“String”、“String Format”等。

/bStr                                                                        (6)

  正则表达式/bStr匹配的字符串必须“Str”开头,且“Str”之前是单词的分界处。正则表达式/bStr不能描述或限定“Str”之后的字符串的形式。以下正则表达式匹配以“ing”结尾的字符串,如“String”、“This is a String”等。

ing/b                                                                     (7)

  正则表达式ing/b匹配的字符串必须“ing”结尾,且“ing”之后是单词的分界处。以下正则表达式匹配一个完整的单词“String”。

/bString/b                                                                           (8)

注意:在某些特定环境或语言下,还可以分别采用/<和/>来匹配单词的开始和结束位置。它们在效果上和元字符/b等效,即都匹配单词的边界这两个位置(开始位置和结束位置)。

2.  匹配字符的元字符


  匹配字符的元字符包括7个字符:.(点号)、/w/W/s/S/d/D。其中,.(点号)匹配除换行符号之外的任意字符;/w匹配单词字符(包括字母、数字、下划线和汉字);/W匹配任意的非单词字符;/s匹配任意的空白字符,如空格、制表符、换行符、中文全角空格等;/S匹配任意的非空白字符;/d匹配任意的数字;/D匹配任意的非数字字符。以下正则表达式匹配一个非空行,该行中可以包含除换行符号之外的任意字符。

^.$                                                                       (9)

  以下正则表达式匹配一个非空行,且该行中只能包含字母、数字、下划线和汉字中的任意字符。

^/w$                                                                      (10)

  以下正则表达式匹配以字母“a”开头的长度等于8的任意单词。

/ba/w/w/w/w/w/w/w/b                                                       (11)

  正则表达式/ba/w/w/w/w/w/w/w/b匹配单词“anterior”的方式如下图所示。


  正则表达式 学习(一)  元字符

  以下正则表达式匹配以字母“a”开头的、后跟随形如“3个字符”+“3个数字”+“1个非数字字符”的、长度等于8的任意单词。

/ba/w/w/w/d/d/d/D/b                                                        (12)

  正则表达式/ba/w/w/w/d/d/d/D/b匹配单词“ante123_”的方式如下图所示。

正则表达式 学习(一)  元字符

3. 总结:

正则表达式的常用元字符(^$/b./w/W/s/S/d/D),它们功能的描述说明如表2-1所示。

表2-1 常用元字符

字符

说明

^

匹配行的开始位置。

$

匹配行的结束位置。

/b

匹配单词的开始或结束位置。

.

匹配除换行符号之外的任意字符。

/w

匹配单词字符(包括字母、数字、下划线和汉字)。

/W

匹配任意的非单词字符(包括字母、数字、下划线和汉字)。

/s

匹配任意的空白字符,如空格、制表符、换行符、中文全角空格等。

/S

匹配任意的非空白字符。

/d

匹配任意的数字。

/D

匹配任意的非数字字符。


  元字符.能够匹配除换行符号之外的任意字符,如大写字母、小写字母、数字、_(下划线)等。以下正则表达式匹配以除换行符号之外的任何字符分割字符串“2007”、“06”、“22”的字符串。

2007.06.22                                                                  (13)

元字符 /W 能够匹配除单词字符之外的任意字符。以下正则表达式匹配长度为 2 的字符串,且该字符串不包括单词字符。

/W/W                                                                               (14)

  使用工具Regex Tester测试正则表达式2007.06.22,结果如图2.3所示。使用工具Regex Tester测试正则表达式/W/W,结果如图2.4所示。在图2.4的结果中,匹配了3个结果:“?”、“*”和“**”。在第一个结果中,正则表达式/W/W中的第一个/W匹配字符“?”的上一行的换行符号,第二个/W才匹配字符“?”。在第三个结果中,正则表达式/W/W中的每一个/W都匹配字符“*”。

正则表达式 学习(一)  元字符

元字符/s能够匹配的空白字符,如空格、制表符、换行符、中文全角空格等。以下正则表达式首先匹配一个单词字符,然后匹配一个空白字符,最后匹配一个单词字符。
/w/s/w                                                                    (15)

元字符/S能够匹配的非空白字符,即除空格、制表符、换行符、中文全角空格等字符之外的字符。以下正则表达式首先匹配一个非空白字符,然后匹配一个空白字符,最后匹配一个非空白字符。

/S/s/S                                                                     (16)

使用工具Regex Tester分别测试正则表达式(15)和(16),结果分别如图。/S/w都能够匹配单词字符,但是,/S能够匹配除了单词字符之外的字符,如字符“/”、“*”等。


正则表达式 学习(一)  元字符         

 

正则表达式 学习(一)  元字符


  元字符/d能够匹配09中的任何数字。以下正则表达式匹配1位的整数(即小于10的整数)。

/d                                                                        (17)

以下正则表达式匹配3位的整数(即大于99小于1000的整数)。

/d/d/d                                                                       (18)

  元字符/D能够匹配除09之外的任何字符。以下正则表达式匹配以数字开头的、非数字字符结尾的字符串,且数字字符是该字符串的第一个字母。

/b/d/D                                                                       (19)

使用工具 Regex Tester 分别测试正则表达式 /d/d/d /b/d/D ,结果分别如图 所示。

正则表达式 学习(一)  元字符

 

   

 

 

 

正则表达式 学习(一)  元字符