正则表达式初探

103 阅读1分钟

特殊字符

  1. ^ . $ * ? + {} {2,} {2,5} |
  2. [] [^] [a-z]
  3. \s \S \w \W
  4. [\u4E00-\u9FA5] () \d

字符说明

符号描述
.匹配任何字符(除了换行符)如^a.以a开头,后面跟任意字符
*匹配前面的元素零次或多次
+匹配前面的元素一次或多次
?匹配前面的元素零次或一次
{2}匹配前面的元素出现了2次,固定的次数
{2,}匹配前面的元素出现次数至少2
{2,5}匹配前面的元素出现次数至少2次最多5次
()提取()中的子串
|匹配两个或多个字符,表示或的关系,如 a|b 匹配 “a” 或 “b”
[0-9]两端字符的区间,如[0-9]|[a-z] 0到9之间任意数字或者a到z之间的某个字符
[abc]匹配一个字符,可以是 “a”、”b” 或 “c” 中任意一个
[^abc]匹配一个字符,不可以是 “a”、”b” 或 “c” 中的任何一个
^匹配开头, 如^a 表示以'a'字符开头
$匹配结尾, 如a$ 表示以a结尾的字符串
\d单个数字, [0-9]
\D除了[0-9]
\w包括下划线在内的单个字符,[A-Za-z0-9_]
\W非单字字符
\s单个数字, [0-9]
\S匹配非空白字符
  • 注意:
    //1、 ?    表示非贪婪匹配模式,从字符串的正向开始匹配 需要以非贪婪模式匹配某个字符,就在某个字符前面加上?
    line = ".sdfdaddddcdddddckldjf"
    regexstr = '.*(d.*d).*'
    //以上语句已经匹配出 dckld 这段字符串
    
    //将匹配规则改为以下语句,才能匹配出  dfd 字符串
    regexstr = '.*?(d.*?d).*'
    
    
    //2、{}
    //以贪婪的模式匹配,d与d之间有一个字符
    line = ".sdfdaddddcdddddckdldjf"
    regexstr = '.*(d.{1}d).*'// 输出  dld  字符串
    
    
    //3、 |
    line = ".上岛咖啡就;lkjjkksdff"
    regexstr = ".*?(上岛咖|lkj)"
    //输出:上岛咖
    //--------------------------------
    
    line = "boobby123"
    regexstr = "((bobby|boobby)123)"
    match = re.match(regexstr, line)
    //match.group(1): 输出 boobby123
    //match.group(2): 输出 boobby