正则表达式元字符如下:. ^ $ * + ? { } [ ] \ | ( ) | |
符号 | 说明 |
. | * 匹配任意单个字符(除换行符\n外) * 例: |
\w | * 表示全部的字母数字的字符集,相当于 [a-zA-Z0-9_]缩写形式 |
\d | * 任何十进制数字 与 [0-9] 一致 |
\s | * 表示空格字符 [空格 \t \r \n \f \v] |
‘^’ 和 ‘$’ | * '^' 匹配字符串开头,在多行模式中,匹配每一行的开头 * '$' 匹配字符串末尾,在多行模式中,匹配每一行的末尾 * 从字符串起始或者结尾或者单词边界匹配
^, $ 都有特殊意义,如果要想匹配字符串中 “^” 和 “$” 字符,则表达式就需要写成 “\^” 和 “\$” * 使用 \(反斜线) * 例: |
\b(匹配边界) 和 \B(匹配非边界) |
* ‘\b’匹配一个单词边界,也就是指字符和空格间的位置。 * 例: * ‘\B’匹配非单词边界,等同 [^\b] * 例: |
限定范围 和 否定 [^...] |
* 除符号 '^' 以外,其它所有元字符在字符集中都失去其原有的特殊含义, * [] 中两个字符用 '-' 连接,用于指定一个字符的范围,如 : * 如果 '^ '紧跟在左侧括号后边,表示不匹配给定字符集中的任何一个字符,如: 1、[^aeiou] 不匹配 aeiou 这些字符 |
*、+ 、?、{N}、{M,N} | * '* ' 表示匹配 至少出现 0 次 * '+ ' 表示最少出现一次 |
() | * 表达式分组 * 例: |
| | * 择一匹配符(有时候也称作 并 或者 逻辑或) * re1 | re2 (匹配正则表达式 re1 或 re2 如: foo | bar) * 例: |
\num (num 是具体数字) |
* 引用分组 num 匹配到的字符串 * 例: |
(?P<name>):给分组起别名 (?P=name):引用别名为name的分组匹配到的字符串 |
* 给分组起别名 (P 是大写) * 例: |
import re
def reFunc(restr,* args):
for s in args:
print(restr + ', ' + s)
res = re.match(restr ,s)
if res is not None:
print 're result:' + res.group()
else:
print('result is None')
reFunc('<(?P<name1>\w+)><(?P<name2>\w+)></(?P=name2)></(?P=name1)>', '<html><body></body></html>')
import re
def reFunc(restr,* args):
for s in args:
print(restr + ', ' + s)
res = re.match(restr ,s)
if res is not None:
print 're result:' + res.group()
else:
print('result is None')
reFunc('<(?P<name1>\w+)><(?P<name2>\w+)></(?P=name2)></(?P=name1)>', '<html><body></body></html>')