侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 93 篇文章
  • 累计创建 110 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Python杂谈(1)——正则表达式常用操作符

Epoch
2020-06-03 / 0 评论 / 0 点赞 / 283 阅读 / 1,047 字 / 正在检测是否收录...
操作符
.           表示任何单个字符
[]          字符集,对单个字符给出取值范围     [abc]表示a、b、c,[a-z]表示a-z单个字符
[^]         非字符集。对单个字符给出排除范围    [^abc]表示非a或b或c的单个字符
*           前一个字符的0次或者无限次的扩展    abc*表示ab、abc、abcc、abcccc等等
+           前一个字符的1次或者无限次的扩展     abc+表示 abc、abccc、abcc、abccccc等
?          前一个字符的0次或者1次扩展           abc?表示 ab、abc
|           左右表达式中的任意一个               abc|def表示abc、def
{m}         扩展前一个字符m次                   ab{2}c表示abbc
{m,n}       扩展前一个字符m至n次(含n)         ab{1,2}c表示abc、abbc
^           匹配字符串开头                     ^abc表示abc在一个字符串的开头
$           匹配字符串结尾                     abc$表示abc在一个字符串的结尾
()          分组标记内部只能使用|操作符          (abc)表示abc ,(abc|def)表示abc、def
\d          数字,等价于[0-9]
\w          单词字符,等价于[A-Za-z0-9_]     表示字符小写大写的a-z 和数字0-9以及下划线_

^-?\d+$         整数形式的字符串
^[0-9]*[1-9][0-9]*$     正整数形式的字符串
[1-9]\d{5}              中国境内邮政编码,6位
[\u4e00-\u9fa5]         匹配中文字符
\d{3}-\d{8}|\d[4]-\d{7}

\d+.\d+.\d+.\d+              --> IP地址  低配版
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}      -->   中配版
0-99            100-199     200-249     250-255
[1-9]?\d        1\d{2}      2[0-4]\d    25[0-5]
([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5].){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])  -->匹配ip地址(完整版)

看不清文本,请复制后到文本中观看,谢谢合作!

python中re使用最小匹配操作符

   *?前一个字符0次或无限次扩展,最小匹配
   +?前一个字符1次或无限次扩展,最小匹配
   ??前一个字符0次或一次的扩展,最小匹配
   {m,n}? 扩展前一个字符m至n次(含n),最小匹配

python中re语法

import re
#在一个字符串中搜索匹配正则表达式的第一个位置返回match对象
match = re.search(r'[1-9]\d{5}','BIT 100081')
if match:
    print(match.group(0))

#从一个字符串的开始位置起匹配正则表达式,返回match对象
match1 = re.match(r'[1-9]\d{5}','100081 BIT')
if match1:
    print(match1.group(0))

#搜索字符串,以列表类型返回全部能匹配的子串
ls = re.findall(r'[1-9]\d{5}','BIT100081 TSU100084')
print(ls)

#将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
split = re.split(r'[1-9]\d{5}','BIT100081 TSU100084')
print(split)
#   maxsplit=1只匹配第一个位置
split1 = re.split(r'[1-9]\d{5}','BIT100081 TSU100084',maxsplit=1)
print(split1)

#搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素都是match对象
for m in re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084'):
    if m:
        print(m.group(0))

#在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

print(re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 TSU100084'))

python中re的match对象

import re
#search表示匹配一次的结果
m = re.search(r'[1-9]\d{5}','BIT100081 TSU100084')
print(m.string)
print(m.re)         #正则表达式
print(m.pos)        #起始位置
print(m.endpos)     #结束位置
print(m.group(0))   #查看匹配的信息   一般都在group(0)中
print(m.start())    #匹配的原始位置
print(m.end())      #匹配的终点位置
print(m.span())     #查看两个位置的二元关系

python中re的贪婪匹配

import re
match = re.search(r'PY.*N','PYANBNCNDN')
#re库默认采用贪婪匹配,即输出匹配最长的子串
print(match.group(0))
#最小匹配
match1 = re.search(r'PY.*?N','PYANBNCNDN')
print(match1.group(0))

声明:我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=23z6dnotw0skk

0

评论区