精通正则表达式
在正则表达式中,元字符(Metacharacter)是一类非常特殊的字符,它能够匹配一个位置或字符集合中的一个字符,如.、/w等。根据功能,元字符可以分为两种类型:匹配位置的元字符和匹配字符的元字符。
匹配位置的元字符包括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等效,即都匹配单词的边界这两个位置(开始位置和结束位置)。
匹配字符的元字符包括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_”的方式如图2.2所示。
在正则表达式中,元字符通常一次只能匹配一个位置或字符集合中的一个字符。通常情况下,如果要匹配数字、字母、空白等字符时,可以直接使用与这些集合相对应的元字符。然而,如果要匹配的字符集合(如集合[0,1,2,3,4,5])没有与之相对应的元字符时,则需要自定义匹配的字符集合。此时,可以使用字符类解决这个一个问题。字符类是一个字符集合,如果该字符集合中的任何一个字符被匹配,则它就会找到该匹配项。
字符类是正则表达式中的“迷你”语言,可以在方括号“[]”中定义。最简单的字符类是方括号“[]”和一个字母表表构成,如元音字符类[aeiou]。以下正则表达式匹配数字0、1、2、3、4、5、6中的任何一个。
[0123456] &n
补充:综合编程 , 其他综合 ,