1、正则表达式(RE)
是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能按某种模式匹配一个有相似特征的字符串的集合,因此能按某模式匹配一系列有相似特征的字符串。
有两种主要方法完成模式匹配:
- 搜索(searching)——在字符串任意部分中查找匹配的模式,通过 search()函数或方法来实现。
- 匹配(matching)——判断一个字符串能否从起始处全部或部分的匹配某个模式,调用 match()函数或方法实现。
2、正则表达式使用的特殊符号和字符
下面介绍最常用的元字符(metacharacters)——特殊字符和符号,正是它们赋予了正则表达式强大的功能和灵活性。
记号 | 描述 | 正则表达式样例 |
符号 | ||
re_string | 匹配字符串的值 | foo |
re1 | re2 | 匹配正则表达式re1或re2 | foo | bar |
. | 匹配任何符号(除换行符外) | ::.+:: |
^ | 匹配字符串的开始 | ^Dear |
$ | 匹配字符串的结尾 | /bin/\w*sh$ |
* | 匹配前面出现的正则表达式零次或多次 | [A-Za-z]\w* |
+ | 匹配前面出现的正则表达式一次或多次 | \d+\.|\.\d+ |
? | 匹配前面出现的正则表达式零次或一次 | goo? |
{N} | 匹配前面出现的正则表达式N次 | \d{3} |
{M, N} | 匹配重复出现M次到N次的正则表达式 | \d{5,9} |
[...] | 匹配字符组里出现的任意一个字符 | [aeiou] |
[..x-y..] | 匹配从字符x到y中的任意一个字符 | [0–9], [A-Za-z] |
[^...] | 不匹配此字符集中出现的任何一个字符,包括某一个范围的字符(如果在此字符集中出现) | [^aeiou], [^A-Za-z0–9_] |
(* | + | ? | { }) ? | 用于上面出现的任何“非贪婪”版本重复匹配次数符号(*,+,?,{}) | .*?\w |
(...) | 匹配封闭括号中正则表达式(RE),并保存为子组 | (\d{3})?, f(oo|u)bar |
特殊字符 | ||
\d | 匹配任何数字,和[0-9]一样(\D是\d的反义:任何非数字符) | data\d+.txt |
\w | 匹配任何数字字母字符,和[A-Za-z0-9]相同(\W是\w的反义) | [A-Za-z_]\w+ |
\s | 匹配任何空白符,和[\n\t\r\v\f](\S是\s的反义) | of\sthe |
\b | 匹配单词边界(\B是\b的反义) | \bThe\b |
\nn | 匹配已保存的子组 | price: \16 |
\c | 逐一匹配特殊字符c(即,取消它的特殊含义,安字面匹配) | \., \\, \* |
\A (\Z) | 匹配字符串的起始(结束) | \ADear |