码迷,mamicode.com
首页 > 其他好文 > 详细

24_正则表达式

时间:2018-10-15 18:29:28      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:group   也有   转义   昨天   制表符   ali   贪婪   字符   出现   

一、定义
    
    正则表达式是对字符串操作的一种逻辑公式,一般使用正则表达式对字符串进行匹配和过滤。
    优点:灵活、功能性强,逻辑性强。
     http://tool.chinaz.com/regex/     #在线测试工具
    正则表达式由普通字符和元字符组成。普通字符——大小写字母、数字。
 
二、元字符
 
    1、字符组
 
        字符组用 [ ]括起来,[ ]内容会被匹配。例如[abc]  匹配 a 或 b 或 c 。字符组中的内容过多可以 [a-z] :a~z之间的所有字母 [0-9]; [a-zA-Z0-9]匹配大小写字母数字。
 
    2、简单元字符
元字符 匹配内容
. 匹配除换行以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母数字下划线
\D 匹配非数字
\S 匹配非空白符
a | b 匹配字符a或字符b
( ) 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中的字符的所有字符
    3、量词 —— 一次匹配很多个字符
 
 
量词 解释
* 重复0次货更多次
+ 重复1 次或更多次
? 重复0次或1次
{n} 重复n次
{n, } 重复n次或更多次
{n, m} 重复n到m次
    4、贪婪匹配和惰性匹配
 
        在量词中的 * ,+ ,{} 都属于贪婪匹配。就是尽可能多的匹配结果
  1 str: 麻花藤昨天让英雄联盟关服了 2 reg: 麻花藤.* 3 此时匹配的是整句话 
     
   .* 后面如果加了? 则是尽可能的少匹配,表示惰性匹配
 1 str: 麻花藤昨天让英雄联盟关服了
 2 reg: 麻花藤.*?
 3 此时匹配的是 麻花藤
 4 str: <div>胡辣汤</div>
 5 reg: <.*>
 6 结果: <div>胡辣汤</div>
 7 str: <div>胡辣汤</div>
 8 reg: <.*?>
 9 结果:
10 <div>
11 </div>
12 str: <div>胡辣汤</div>
13 reg: <(div|/div*)?>
14 结果:
15 <div>
16 </div>
     .*?x的特殊含义 找到下?个x为?
 1 str: abcdefgxhijklmn 2 reg: .*?x 3 结果:abcdefgx 
 
    5、分组 ——  正则中使?( )进?分组
 
    匹配 老式新式身份证号
 1 ^[1-9]\d{14}(\d{2}[0-9x])?$  2 ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ 
 
  6、转义
 
在正则表达式中, 有很多有特殊意义的是元字符, 如\n和\s等,如果要在正则中匹配正常的"\n"而不是"换行符"就需要对"\"进行转义, 变成‘\\‘.在python中, 无论是正则表达式, 还是待匹配的内容, 都是以字符串的形式出现的, 在字符串中\也有特殊的含义, 本身还需要转义. 所以如果匹配一次"\n", 字符串中要写成‘\\n‘, 那么正则里就要写成"\\\\n",这样就太麻烦了.这个时候我们就?到了r‘\n‘这个概念, 此时的正则是r‘\\n‘就可以了.

24_正则表达式

标签:group   也有   转义   昨天   制表符   ali   贪婪   字符   出现   

原文地址:https://www.cnblogs.com/hq82/p/9792158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!