正则表达式

引用自
http://crossincode.com/course/lesson_list/
http://www.runoob.com/regexp/regexp-syntax.html
感谢
另 推荐一个在线练习正则的网站 https://regexr.com/

“[ ]"
在正则表达式中,[ ]表示满足括号中任一字符。比如“[hi]”,它就不是匹配“hi”了,而是匹配“h”或者“i”。“[Hh]i”,就可以既匹配“Hi”,又匹配“hi”了
“[ ^ ]"反义
[a]的反义是[^a],表示除a以外的任意字符。
[^abcd]就是除abcd以外的任意字符。

“ | "
“|”相当于python中“or”的作用,它连接的两个表达式,只要满足其中之一,就会被算作匹配成功。
匹配时,会按照从左往右的顺序,一旦匹配成功就停止验证后面的规则。假设要匹配的电话号码还有可能是任意长度的数字(如一些特殊的服务号码),你应该把|\d+这个条件加在表达式的最后。如果放在最前面,某些数据就可能会被优先匹配为这一条件。

常用限定符

" * "
重复0次或多次
" + "
重复1次或多次
" ? "
重复0次或1次

“{ }”
有三种形式:
1 - {n}
n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
2 - {n,}
n 是一个非负整数。至少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于 ‘o+’。‘o{0,}’ 则等价于 ‘o*’。
3 - {n,m}
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,“o{1,3}” 将匹配 “fooooood” 中的前三个 o。‘o{0,1}’ 等价于 ‘o?’。

ps: 请注意在逗号和两个数之间不能有空格。

r

r
这里字符串前面加了r,是raw的意思,它表示对字符串不进行转义。为什么要加这个?你可以试试print “\bhi"和r”\bhi"的区别。

print "\bhi"
hi
print r"\bhi"
\bhi

可以看到,不加r的话,\b就没有了。因为python的字符串碰到“\”就会转义它后面的字符。如果你想在字符串里打“\”,则必须要打“\”。

print "\\bhi"
\bhi

这样的话,我们的正则表达式里就会多出很多“\”,让本来就已经复杂的字符串混乱得像五仁月饼一般。但加上了“r”,就表示不要去转义字符串中的任何字符,保持它的原样。

“.”
点符号,表示除换行符以外的任意字符。

^
匹配字符串的开始
$
匹配字符串的结束

“\b”low
在正则表达式中表示单词的开头或结尾,空格、标点、换行都算是单词的分割。而“\b”自身又不会匹配任何字符,它代表的只是一个位置。所以单词前后的空格标点之类不会出现在结果里。
“\B”up
匹配不是单词开头或结束的位置

“\s”low
匹配任意的空白符
“\S”up
表示除空白符以外的任意字符 (注意是大写字符S)。

“\d” low
表示所有数字。
“\D” up
匹配任意非数字的字符

"\w" low
匹配字母,数字,下划线,汉字(我试验下了,发现3.x版本可以匹配汉字,但2.x版本不可以)
"\W" up
匹配任意不是字母,数字,下划线,汉字的字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值