正则表达式
Basic Patterns
a, X, 9, < -- 除了以下字符外其它都表示它本身:. ^ $ * + ? { [ ] \ | ( )
- .
(句点) -- 匹配任何字符除了'\n'
\w -- (注意是小写w) 匹配任一单个数字或字母或下划线_[0-9a-zA-Z_]。 \W (大写的 W)匹配任意单个非\w字符
\b -- 匹配单词的开头或结尾,也就是单词的分界处。它只匹配一个位置。
\b作转义字符表示退格。
\s -- (小写的 s) 匹配任意单个whitespace字符 [\n\r\t\f]。\S (大写 S) 匹配任意单个非\s字符
\t,\n, \r -- tab, newline, return
\d -- 十进制数字 [0-9](在某些版本的正则表达式中没有这个匹配)
^( = start), $( = end) -- 分别匹配字符串的开头和结尾
\ -- 去转义。比如\.就表示单纯的句点。
Repetition
+ -- 匹配一个或多个
* -- 匹配0个或多个
? -- 匹配0个或一个
{} -- 指定重复次数。{2}匹配重复2次,{2,5}匹配重复2到5次。
Leftmost & Largest
- 正则表达式默认匹配字符串最左边并且最大的匹配字符串。
- 加一个?在pattern最后,可以让匹配largest转为smallest。
#Pythonmatch = re.search(r'i+', 'piigiiii') => found, match.group() == "ii"match = re.search(r'i+?', 'piigiiii') => found, match.group() == "i"match = re.search(r'<.*>', '<b>aaa<\b>') => found, match.group() == "<b>aaa<\b>"match = re.search(r'<.*?>', '<b>aaa<\b>') => found, match.group() == "<b>"
Square Brackets
- 方括号
[]匹配括号中任一字符。
[]中可以用短横线表示范围。如[0-9]匹配从0到9任意一个数字。[a-zA-Z]匹配任一个字母。如果要表示下划线这个字符,必须把-放在最后,如[0-9-]表示数字和-。
- up-hat
^放在[]中最开始位置,表示反转这个表达式。如[^ab]匹配所有不是ab的字符。
Lecture