2018-06-16正则表达式引入

2018-06-18  本文已影响8人  菩灵
Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32
import re
pattern = "itcast"
s = "itcastitem"
result = re.match(pattern, s)
result
<_sre.SRE_Match object; span=(0, 6), match='itcast'>
dir(result)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
result.group()
'itcast'

以上还不具备任何通用性,完全可以使用“itcastitems”.startwith(itcast)。
通用规则:


正则表达式通用规则
  1. “.”可以匹配任何一个字符,用以判断是否有指定数量的字符,由于match方法的特殊性,“...”可以匹配"abcd",但只能匹配出相应数量:“abc”
  2. \d,匹配数字,对应位置必须是一个数字
  3. \D,匹配非数字
  4. \s,匹配空白,空白不止是空格,包括 \t \n \r
  5. \w,匹配单词:a-z,A-Z,0-9,_
  6. [],匹配其中列举的字符,都是可以出现的,中间不需要逗号或者空格空开,如果有“^”则取反;可以用中斜线代表范围比如[a-z5-9]
    \d == [0-9]
    \D == [^0-9]
    \w == [a-zA-Z0-9_]
    \W == [^a-zA-Z0-9_]
    表示数量:
  7. ”表示可以0个或者任意多个前一个字符(有或者没有都行),tip:[\d]表示可以有多个数字也可以没有数字,相当于[\d\d\d\d\d...]
  8. "+"至少出现一次,1次或者无限次,和星号区别是:+号必须出现一次数字,星号可以不出现数字。
  9. “?”要么有一次,要么没有;能匹配出一次
  10. {m}表示前面一个字符必须出现m次,多一次少一次都不行;加一个“,”表示大于等于m次,相当于左闭右的区间。{m,n}出现m到n次。{0,}>= 0,表示*,{1,}>= 1,表示+,{0,1}<= 1,表示?

注意:result = re.match("\d*","a"),返回的是"",为什么不是None?——不符合规则的时候返回None,现在符合规则返回的是"a"前面的""(空字符串)(“a”可以看作是"""a")

上一篇 下一篇

猜你喜欢

热点阅读