Python正则表达式(一看就懂)

Python正则表达式(一看就懂)哈喽O(∩_∩)O今天来发一下python正则表达式,其实这个也是比较简单的什么是正则表达式(⊙_⊙)目前越来越多的网站、编辑器、编程语言都已支持一种叫“正则表达式”的字符串查找“公式”,有过编程经验的同学都应该了解正则表达式(RegularExpression简写regex)是什么东西,它是一种字符串匹配的模式(pattern),更像是一种逻辑公式。简单说,正则表达式是python中必备的工具,主要是用来查找和匹配字符串的。正则表达式尤其在python爬虫上用的多。正则表达

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

哈喽O(∩_∩)O?

什么是正则表达式(⊙_⊙)

简单说,正则表达式是…

正则表达式怎么用❓

sreach的用法?

匹配连续的多个数值?

 字符”+”重复前面一个匹配字符一次或者多次?

字符”*”重复前面一个匹配字符零次或者多次?

字符”?”重复前面一个匹配字符零次或者一次?

特殊字符使用反斜杠”“引导,例如”\r”、”\n”、”\t”、”\”分别表示回车、换行、制表符号与反斜线自己本身

 完整表?

 match用法?

match用法?

 match对象?

数量词?

匹配开头、结尾?

 匹配分组?

match总结?

实践出真知 凸(`0´)凸 ☀️

写在最后?


哈喽O(∩_∩)O?

今天来发一下python正则表达式,其实这个也是比较简单的

肝了好几个小时才写出来呀

什么是正则表达式(⊙_⊙)

目前越来越多的网站、编辑器、编程语言都已支持一种叫“正则表达式”的字符串查找“公式”,有过编程经验的同学都应该了解正则表达式(Regular Expression 简写regex)是什么东西,它是一种字符串匹配的模式(pattern),更像是一种逻辑公式。

简单说,正则表达式是…

python中必备的工具,主要是用来查找和匹配字符串的。

正则表达式尤其在python爬虫上用的多。

正则表达式怎么用❓

首先,我们要导入头文件(写c++写习惯了)模块

import re

因为re是内置模块,所以不需要额外安装,就很银杏

sreach的用法?

匹配连续的多个数值?

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

import re

r=r"\d+"
m=re.search(r,"YRYR567eruwgf")#目标是567
print(m)

re模块中,r“\d+”正则表达式表示匹配连续的多个数值,search是re中的函数,从”YRYR567eruwgf”字符串中搜索连续的数值,得到”567″

结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

可以看到,搜索到了连续值“567”

 字符”+”重复前面一个匹配字符一次或者多次?

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

import re

r=r"b\d+"
m=re.search(r,"a12b1233cd")
print(m)

 这样,结果就是b后面的连续数字

结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

字符”*”重复前面一个匹配字符零次或者多次?

“*” 与 “+”类似,但有区别,列如:
可见 r”ab+“匹配的是”ab”,但是r”ab
 “匹配的是”a”,因为表示”b”可以重复零次,但是”+“却要求”b”重复一次以上

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_19,color_FFFFFF,t_70,g_se,x_16

import re

r=r"ab+"
m=re.search(r,"acabc")
print(m)

r=r"ab*"
m=re.search(r,"acabc")
print(m)

 结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

字符”?”重复前面一个匹配字符零次或者一次?

匹配结果”ab”,重复b一次 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

import re

r=r"ab?"
m=re.search(r,"abbcabc")
print(m)

 结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

特殊字符使用反斜杠”“引导,例如”\r”、”\n”、”\t”、”\”分别表示回车、换行、制表符号与反斜线自己本身

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

import re

r=r"a\nb"
m=re.search(r,"ca\nbcaba")
print(m)

 结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

 完整表?

其实上面说这些都是比较基础,比较简单的,还有复杂一点的,都在这张表里

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

 match用法?

match用法?

语法:re.match(pattern, string[, flags])  

从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配,pattern要以$结尾。

#示例:
name='张三'
if re.match('张\w+',name):
    print('{},你好!'.format(name))
    # 张三,你好!

输出结果:张三,你好

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_10,color_FFFFFF,t_70,g_se,x_16

张三:谁叫我?

不开玩笑了,继续

总的来说,match就是

  • 返回匹配的match对象
  • 默认从给定字符串的开头开始匹配、即使正则表达式没有用^声明匹配开头

 match对象?

Match对象的几个属性: 

注意,前面是有“.”的
1..string 待匹配的文本
2..re 匹配使用的pattern对象
3..pos 正则表达式搜索文本的开始位置
4..endpos 正则表达式搜索文本的结束位置
Match对象的几个方法: 
1.group(0) 返回匹配到的子串
2.start() 返回匹配子串的开始位置
3.end() 返回匹配子串的结束位置
4.span() 返回start()、end()

数量词?

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_19,color_FFFFFF,t_70,g_se,x_16

匹配开头、结尾?

647a8685264d461799e9dbfee4201c06.png

 匹配分组?

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_20,color_FFFFFF,t_70,g_se,x_16

好了,看了上面几张表,其实我觉得最重要的在下面e2e2439efb474c83ab4e691acd2d0827.png  

match总结?

其实没啥好总结的,但你要看懂这张图,这个很重要

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWVJfVA==,size_16,color_FFFFFF,t_70,g_se,x_16

 我框出来的是我自己感觉经常用的

其实我自己刚学的时候也听不懂,现在觉得可简单了

所以,你应该现在就觉得很简单吧?

但是,正则表达式的字符很多,容易记混,一不小心就好几十个报错,很让人崩溃

80fedf710ab141abae6613a0e6b4ecca.gif

实践出真知 凸(`0´)凸 ☀️

学了这么多,是不是想撸个程序了?

已经给你准备好了

程序效果:输入手机号,通过正则表达式判断手机号合不合法,

如果合法,就输出这个手机号的信息(所属地等)

如果不合法,就重新输入,简单吧?

这里我想重点说一下怎么获取手机号的信息

我一开始打算上网上百度一波的,没想到直接复制过来23个报错、我也是醉了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZUl9U,size_20,color_FFFFFF,t_70,g_se,x_16

哎呀,不能再发表情包了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZUl9U,size_16,color_FFFFFF,t_70,g_se,x_16

ε=(´ο`*)))唉,还是自己写吧、、、

我想起了有个模块叫phone,可以实现这个功能

但是你可能还没有安装这个模块,要按命令行模式下输入pip install phone

等个六六四十九秒就下载下来了

然后你就可以体验一下了

代码(PyCharm运行通过)

import phone
from time import *
import re

def begin():
    print("欢迎来到查询小程序")
    print("1.查询")
    print("2.用户")


def p(n):
    if re.match(r'1[3,4,5,7,8]\d{9}', n):
        if re.match(r'13[0,1,2]\d{8}', n) or \
                re.match(r"15[5,6]\d{8}", n) or \
                re.match(r"18[5,6]", n) or \
                re.match(r"145\d{8}", n) or \
                re.match(r"176\d{8}", n):
            return True
        elif re.match(r"13[4,5,6,7,8,9]\d{8}", n) or \
                re.match(r"147\d{8}|178\d{8}", n) or \
                re.match(r"15[0,1,2,7,8,9]\d{8}", n) or \
                re.match(r"18[2,3,4,7,8]\d{8}", n):
            return True
        else:
            return True
    else:
        return False

if __name__ == "__main__":
    s=0
    begin()
    while True:
        op = int(input("请输入:"))
        if op==1:
            phoneNum = str(input("请输入你的电话号码"))
            if p(phoneNum)==False:
                print("该手机号无效")
                for i in range(100):
                    print('\n')
                begin()
            else:
                info = phone.Phone().find(phoneNum)
                print("手机号码:"+str(info["phone"]))
                print("手机所属地:"+str(info["province"])+"省"+str(info["city"])+"市")
                print("邮政编号:"+str(info["zip_code"]))
                print("区域号码:"+str(info["area_code"]))
                print("手机类型:"+str(info["phone_type"]))
                s+=1
                i = input("输入任意数退出...")
                for i in range(100):
                    print('\n')
                begin()
        if op==2:
            print("使用次数:"+str(s))
            i = input("输入任意数退出...")
            for i in range(100):
                print('\n')
            begin()

写在最后?

感觉这次的博客好像比较长,你能看到这里,已经超越了60%的人了,如果有谁还不是很明白,或者有c++和python的问题,都可以私信我,我看到后会一一回复哦

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZUl9U,size_20,color_FFFFFF,t_70,g_se,x_16

另外,互粉必回?

感谢您的阅读,拜拜!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159347.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LaTex学习笔记——LaTeX公式换行

    LaTex学习笔记——LaTeX公式换行ps.  1、“\!”表示其前后字符之间无间隙       2、暂留       3、段落中的数学表达式应该置于(和), $和$ 或者begin{math}和end{math} 之间。       4、对于较大的数学式子,最好的方法是使用显示式样来排版:将它们放置于[和]或begin{displaymath}和end{displaymath}之间。这样排版出的公式是没有编号…

    2022年6月7日
    159
  • eclipse中各种代码的注释快捷键

    eclipse中各种代码的注释快捷键Java文件:注释和取消注释的快捷键都是:CTRL+/或Shift+Ctrl+CJS文件:注释和取消注释的快捷键都是:CTRL+/或Shift+Ctrl+Cxml文件:注释:选中要注销的代码CTRL+SHIFT+/或选中代码按Shift+Ctrl+C取消注释:CTRL+SHIFT+\或Shift+Ctrl+Cjsp文件:ht…

    2022年5月15日
    59
  • java 异或加密_Java异或技操作给任意的文件加密原理及使用详解

    java 异或加密_Java异或技操作给任意的文件加密原理及使用详解异或简单介绍:异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。需求描述在信息化时代对数据进行加密是一个很重要的主题,在做项目的过程中,我也实现了一个比较复杂的加密算法,但是由于涉及到的技术是保密的,所以在这里我实现一个比较简单的版本,利用文件的输入输出流和异或操…

    2022年9月28日
    1
  • JAVA中全局变量

    java中的全局变量是由public修饰的static成员变量,形如publicstaticintID;java中的全局变量是放在静态方法区中的,所有的实例对象会共享同一份全局变量。所以一旦对某个类实例化后对其中的全局变量做出修改,那么其他的实例其中的全局变量值也相应的会被修改。定义了一个测试类如下:packageTEST;publicclassClassTest{ pu…

    2022年4月5日
    76
  • SSH 学习笔记[通俗易懂]

    SSH 学习笔记[通俗易懂]前言:一直对SSH的概念比较陌生,由此而惧怕SSH,因此找来部分博客进行学习,将一些重难点予以记录。文章目录1、SSH原理简介1、SSH原理简介SSH叫安全外壳协议(SecureShell),是一种加密的网络传输协议,可在不安全的网络中网络服务提供安全的传输环境。它通过在网络中创建安全隧道来实现SSH客户端和服务器之间的连接。SSH是一种协议,存在多种实现,既有商业实现,也有开源实现(OSSH,OpenSSH)。公钥:ssh-keygen是安全外壳(SSH)协议套件

    2022年6月24日
    26
  • HttpSession的正确理解

    HttpSession的正确理解一个session就是一系列某用户和服务器间的通讯。服务器有能力分辨出不同的用户。一个session的建立是从一个用户向服务器发第一个请求开始,而以用户显式结束或session超时为结束。其工作原理是这样的:当一个用户向服务器发送第一个请求时,服务器为其建立一个session,并为此session创建一个标识号;这个用户随后的所有请求都应包括这个标识号。服务器会校对这个标识号以判断请求属于…

    2022年7月13日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号