首页 > 其他分享 >正则表达式

正则表达式

时间:2023-05-01 19:33:22浏览次数:36  
标签:__ group 正则表达式 re print obj match

 

/*
一: 基本操作
二: 匹配: 单字符
三: 匹配: 多字符
四: 开头结尾
五: 匹配分组
*/

 

一: 基本操作

import re
if __name__ == '__main__':
    # 匹配操作: match()
    result = re.match(正则表达式, 要匹配的字符串)
    # 提取数据: group()
    result.group()
    
 
import re
if __name__ == '__main__':
    result = re.match("cnblogs.","cnblogs.com")
    info = result.group()   # cnblogs.
    print(info)

 

二: 匹配: 单字符

 

import re

# . : 任意1个字符
if __name__ == '__main__':
    ret = re.match(".", "M")
    print(ret.group())  # M

    ret = re.match("t.o", "too")
    print(ret.group())  # too

    ret = re.match("t.o", "two")
    print(ret.group())  # two
    
    
# [] : 多中取1 
if __name__ == '__main__':
    # 匹配字母
    result = re.match("h","hello")
    print(result.group())   # h 

    result = re.match("H","Hello")
    print(result.group())   # H
    
    result = re.match("[Hh]","hello")
    print(result.group())   # h
    
    # 匹配数字
    result = re.match("[0123456789]","6hello")
    print(result.group())   # 6
        
    result = re.match("[0-9]","6hello")
    print(result.group())   # 6


# \d : 数字
if __name__ == '__main__':
    result = re.match("嫦娥\d号","嫦娥6号")
    print(result.group())   # 嫦娥6号


# \D : 非数字
if __name__ == '__main__':
    result = re.match("\D","嫦娥66号")
    print(result.group())   # 嫦
   
   
# \s : 空白 
if __name__ == '__main__':
    match_obj = re.match("hello\sworld", "hello world")
    if match_obj:
        result = match_obj.group()
        print(result)       # hello world
    else:
        print("匹配失败")   
        
        
# \S : 非空白   
if __name__ == '__main__':
    match_obj = re.match("hello\Sworld", "hello0world")
    result = match_obj.group()
    print(result)   # hello0world    
    
    
# \w : 非特殊字符
if __name__ == '__main__':
    match_obj = re.match("\w", "ab")
    result = match_obj.group()        
    print(result)   # a 
    
    
# \W : 特殊字符   
if __name__ == '__main__':
    match_obj = re.match("\W", "#")
    result = match_obj.group()
    print(result)   # #

 

三: 匹配: 多字符

import re

# * : 匹配前一个字符出现0次或者无限次
if __name__ == '__main__':
    ret = re.match("[A-Z][a-z]*", "M")
    print(ret.group())  # M
   
if __name__ == '__main__':
    ret = re.match("[A-Z][a-z]*", "MmmM")
    print(ret.group())  # Mmm
    
if __name__ == '__main__':
    ret = re.match("[A-Z][a-z]*", "MmmMnn")
    print(ret.group())  # Mmm
    
# * : 匹配前一个字符出现1次或者无限次
if __name__ == '__main__':
    match_obj = re.match("t.+o", "two")
    print(match_obj.group())    # two
    
    
# ? : 匹配前一个字符出现1次或者0次
if __name__ == '__main__':
    match_obj = re.match("https?", "http")
    print(match_obj.group())    # http
    
    
# {m} : 匹配前一个字符出现m次
# {m, n} : 匹配前一个字符出现从m到n次
if __name__ == '__main__':
    ret = re.match("[a-zA-Z0-9_]{6}", "12a3g45678")
    print(ret.group())  # 12a3g4

if __name__ == '__main__':
    ret = re.match("[a-zA-Z0-9_]{10,12}", "1ad12f23s34455ff66")
    print(ret.group())  # 1ad12f23s344

 

四: 开头结尾

 

# ^ : 匹配字符串开头
# $ : 匹配字符串结尾
if __name__ == '__main__':
    ret = re.match("^\d.*", "3hello")
    print(ret.group())  # 3hello

if __name__ == '__main__':
    ret = re.match(".*\d$", "3hello6")
    print(ret.group())  # 3hello6
    
# 匹配以数字开头中间内容不管以数字结尾 if __name__ == '__main__': ret = re.match("^\d.*\d$", "6hello6") print(ret.group()) # 6hello6 # [^指定字符]: 表示除了指定字符都匹配 if __name__ == '__main__': ret = re.match("[^abcef]", "dello6") print(ret.group()) # d

 

五: 匹配分组

 

# | : 匹配左右任意一个表达式
if __name__ == '__main__':
    fruit_list = ["apple", "banana", "orange", "pear"]

    for value in fruit_list:
        match_obj = re.match("apple|pear", value)
        if match_obj:
            print("%s 是我想要的" %match_obj.group())
        else:
            print("%s 不是我想要的" %value)
      
    
# (ab) : 括号中字符作为一个分组
if __name__ == '__main__':
    # 需求: 匹配qq:10567这样的数据,提取出来qq文字和qq号码 
    match_obj = re.match("(qq):([1-9]\d{4,10})", "qq:10567")

    if match_obj:
        print(match_obj.group())    # qq:10567
        print(match_obj.group(1))   # qq
        print(match_obj.group(2))   # 10567
    else:
        print("匹配失败")  
    
    
# \num : 引用分组num匹配到的字符串  

    match_obj = re.match("<[a-zA-Z1-6]+>.*</[a-zA-Z1-6]+>", "<html>hh123</div>")
    print(match_obj.group())    # <html>hh123</div>

    match_obj = re.match("<([a-zA-Z1-6]+)>.*</\\1>", "<html>h789h</html>")
    print(match_obj.group())    # <html>h789h</html> 

    match_obj = re.match("<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\\2></\\1>", "<html><h1>www.cnblogs.cn</h1></html>")
    print(match_obj.group())    # <html><h1>www.cnblogs.cn</h1></html>
    
    
# (?P<name>) (?P=name) : 分组起别名 引用别名  
    match_obj = re.match("<(?P<name1>[a-zA-Z1-6]+)><(?P<name2>[a-zA-Z1-6]+)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.cnblogs.cn</h1></html>")
    print(match_obj)    # <re.Match object; span=(0, 36), match='<html><h1>www.cnblogs.cn</h1></html>'>

 

标签:__,group,正则表达式,re,print,obj,match
From: https://www.cnblogs.com/huafan/p/17366869.html

相关文章

  • 常用的正则表达式
    开发过程中中常用正则式身份证弱校验:15位或18位,最后一位为校验位可能为数字或字符X(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)手机号^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$ipv4地址((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.......
  • java-正则表达式判断手机号
    要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段,故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下:移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188联通:130、131、132、152、155、156、185、186......
  • 正则表达式引发的惨痛代价
    关注Java后端技术栈“回复“面试”获取最新资料案例在一次小型项目开发中,我遇到过这样一个问题。为了宣传新品,我们开发了一个小程序,按照之前评估的访问量,这次活动预计参与用户量30W+,TPS(每秒事务处理量)最高3000左右。这个结果来自我对接口做的微基准性能测试。我习惯使用ab工具......
  • 正则表达式(补
    1.限定符a*:表示a重复0次及以上a+:表示a重复1次及以上a?:表示a重复0次或1次a{n}:表示a重复n次a{n,}:表示a重复n次或更多次a{n,m}:表示a重复n到m次注:如果需要判断字符串的重复:(字符串)限定符2.或运算符"|"eg.a(cat|dog):匹配的字符串是acat或adog3.字符类我们想匹配由a、b、c......
  • JavaScript 正则表达式
    基本使用 //定义正则表达式 constreg=/^\d{4}-\d{1,2}-\d{1,2}$/; conststr="2020-11-11"; //验证字符串是否符合规则 reg.test(str);元字符^表示开始部分等于xxx$表示结束部分等于xxx[]表示字符串中存在中括号中定义的字符,可以使用连字符,如a-z表示可以匹......
  • 简化代码————匿名内部类,正则表达式,Lambda
         正则表达式     错误示范     ......
  • JS-数学表达式正则表达式支持(包含希腊字母、小数点等)
    //技术状况规则/**evt:{target:{value:''}},row:{"propName":"""propRule":""}*/functioncheckRule(evt,row,propName,propRule){//匹配a=5,a>5,a<5,a≤6,a≥5等varrule1=/[ΆΈ-ώa-zA-z]+([1-9]......
  • 身份证号和手机号正则表达式脱敏
    /***身份证号脱敏*脱敏规则:保留前六后三,适用于15位和18位身份证号*@paramidNumber*@authorcy*@since2022-04-22/publicstaticStringdesensitizedIdNumber(StringidNumber){if(StringUtil.isStrNotEmpty(idNumber)){if(idNumber.length()==15){idNu......
  • 给定一个正整数字符串,使用Python正则表达式在其千分位上添加逗号
    大家好,我是皮皮。一、前言前几天在Python黄金青铜群【沐】问了一个Python正则表达式的问题,这里拿出来给大家分享下。题目:给定一个正整数字符串,如12345678、345678,使用正则表达式在其千分位上添加逗号,如12,345,678、345,678。二、实现过程这里ChatGPT给了一个答案,可以使用......
  • 正则表达式
    由数字、26个英文字母或者下划线组成的字符串^[0-9a-zA-Z_]{1,}$或^/w+$由26个英文字母组成的字符串^[A-Za-z]+$只能输入数字^[0-9]*$只能输入n位数字^/d{n}$只能输入至少n位数字^/d{n,}$只能输入m-n位数字^/d{m,n}$m到n个汉字@“^[\u4E00-\u9FA5]{m,n}$”只含有......