python--正则表达式,元字符,反义符,转义符,位数问题

news2024/11/27 18:37:34

 正则表达式(regular expression):

为什么使用正则表达式:

                在软件开发过程中,经常会涉及到大量的关键字等各种字符串的操作,使用正则表达式能很大程度的简化开发的复杂度和开发的效率,所以python中正则表达式在字符串的查询匹配中,占据很重要的地位

 'compile', 'copyreg', 'enum', 'error', 'escape', 'findall', 'finditer', 'fullmatch', 'functools', 'match', 'purge', 'search', 'split', 'sub', 'subn', 'template'

python中的re

                该模块是pyhton用来支持正则表达式模块,所以我们如需写正则表达式,必须学习该模块

 正则表达式的使用:

元字符:

        ​​​​​​​        ​​​​​​​.        ​​​​​​​        ​​​​​​​                #匹配任意符号(\n也就是换行符不匹配)

        ​​​​​​​        \w                             #匹配有效符号

        ​​​​​​​        \d                             #匹配数字

        ​​​​​​​        \s                             #匹配空白位(空格,\t, \n ,\r)

        ​​​​​​​        ^                              #以什么开头

        ​​​​​​​        $                              #以什么结尾

        ​​​​​​​        [ ]        ​​​​​​​        ​​​​​​​        ​​​​​​​     #列举中括号中的某一符号

        ​​​​​​​        [123456abc_]

        ​​​​​​​        [0123456789]

        ​​​​​​​        [0-9]

        ​​​​​​​        [a-z]

        ​​​​​​​        [0-9a-zA-Z]

 

>>> import re
>>>
>>> re.match("zhangbaoning", "zhangbaoning")
<re.Match object; span=(0, 12), match='zhangbaoning'>
>>> re.match("zhangbaoning", "zhangbaoning is good")
<re.Match object; span=(0, 12), match='zhangbaoning'>
>>> re.match(".", "zhangbaoning is good")
<re.Match object; span=(0, 1), match='z'>
>>> re.match(".", "Azhangbaoning is good")
<re.Match object; span=(0, 1), match='A'>
>>> re.match(".", "5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='5'>
>>> re.match(".", "中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='中'>
>>> re.match(".", "\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='\r'>
>>> re.match(".", "\t\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='\t'>
>>> re.match(".", "+\t\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='+'>
>>>
>>>
>>>
>>> re.match("\w", "a")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\w", "A")

<re.Match object; span=(0, 1), match='A'>
>>> re.match("\w", "456")

<re.Match object; span=(0, 1), match='4'>
>>> re.match("\w", "_")

<re.Match object; span=(0, 1), match='_'>
>>> re.match("\w", "_456")

<re.Match object; span=(0, 1), match='_'>
>>> re.match("\w", "+_456")

>>> re.match("\w", "中+_456")

<re.Match object; span=(0, 1), match='中'>
>>>
>>>
>>>
>>> 中 = 10
>>> print(中)
10
>>> re.match("\d\d", "1assd24")

>>> #re.match("\d\d", "1assd24")   ==>match是从头匹配
>>> re.match("\d\d", "10assd24")

<re.Match object; span=(0, 2), match='10'>
>>> re.match("\s\s", "  ifyf")

<re.Match object; span=(0, 2), match='  '>
>>> re.match("\s\s", " \tifyf")

<re.Match object; span=(0, 2), match=' \t'>
>>> re.match("\s\s", " \n\tifyf")

<re.Match object; span=(0, 2), match=' \n'>
>>> re.match("\s\s", "\n\tifyf")

<re.Match object; span=(0, 2), match='\n\t'>
>>> re.match("\s\s", "\r\n\tifyf")

<re.Match object; span=(0, 2), match='\r\n'>
>>>
>>>
>>>
>>>
>>> re.match("^\d\d\w", "23a is")

<re.Match object; span=(0, 3), match='23a'>
>>> re.match("\d\d\w", "23a is")

<re.Match object; span=(0, 3), match='23a'>
>>>
>>> re.findall("\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
['16', '18']
>>> re.findall("^\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
[]
>>> re.findall("^\d+", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
['123456']
>>> re.findall(".*", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
['123456我今年16岁,是一个花季少女,我静静的等着18岁', '']
>>> re.findall(".*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
[]
>>> re.findall(".*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18")
['123456我今年16岁,是一个花季少女,我静静的等着18']
>>> re.findall("^\d.*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18")

['123456我今年16岁,是一个花季少女,我静静的等着18']
>>> re.match("\d[abc].*","238sadfdgfrgrs")
>>> re.match("\d[abc].*","2sadfdgfrgrs")

>>> re.match("\d[abc].*","2caadfdgfrgrs")
<re.Match object; span=(0, 13), match='2caadfdgfrgrs'>

>>> re.match("[0123456789]", "5")
<re.Match object; span=(0, 1), match='5'>
>>> re.match("[a-z]", "d")
<re.Match object; span=(0, 1), match='d'>
>>> re.match("[0-9]", "8")
<re.Match object; span=(0, 1), match='8'>
>>> re.match("[0-9A-Za-z_]", "8")
<re.Match object; span=(0, 1), match='8'>
>>> re.match("[0-9A-Za-z_]", "_")
<re.Match object; span=(0, 1), match='_'>
>>> re.match("[0-9A-Za-z_]", "t")
<re.Match object; span=(0, 1), match='t'>
>>> re.match("[0-9A-Za-z_]", "W")
<re.Match object; span=(0, 1), match='W'>

反义符: 

                \w                        #特殊符号

                \D                        #非数字

                \S                        #非空白位

                [^]                        #非列举,和[ ]正好相反

>>> re.match("\D","A10086")
<re.Match object; span=(0, 1), match='A'>
>>> re.match("\D","a10086")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\w","a10086")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\s","a10086")
>>> re.match("\S","a10086")
<re.Match object; span=(0, 1), match='a'>

>>> re.findall("^\d.*", "ladohig")
[]
>>> re.findall("^\d.*", "1adohig")
['1adohig']
>>> re.findall("^[0-9].*", "1adohig")
['1adohig']
>>> re.findall("[^0-9].*", "1adohig")
['adohig']
>>> re.findall("[^abcd].*", "a1adohig")
['1adohig']

 

转义符: 

>>> print("\n123")

123
>>> print("\\n123")
\n123
>>> url = "d:\\a\\d\\c.txt"
>>> print(url)
d:\a\d\c.txt
>>>

>>> re.match("c:\\\\a\\\\d\\\\c.txt", url)
>>> re.match(r"c:\\a\\d\\c.txt", url)
>>> # re.match(r"c:\\a\\d\\c.txt", url) 加r,表示正则表达式

 

位数问题:

                        *                                #匹配任何位(0到多位)

                        +                               #匹配1到多位

                        ?                              #匹配0或者1位

                        {n}                             #确切的有n位

                        {m,n}                         #[m,n]区间内的任意值

                        {n,}                            # >= n

>>> #位数问题:
>>>
>>>
>>> re.findall("\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
['16', '18']
>>> re.findall("\d*", "我今年16岁,是一个花季少女,我静静的等着18岁")
['', '', '', '16', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '18', '', '']
>>> re.findall("\d*", "我今年16岁,是一个花季少女,我静静的等着18岁")
['', '', '', '16', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '18', '', '']
>>>
>>>
>>>
>>>
>>> re.findall(r"1[3456789]\d{9}", "18709319726")
['18709319726']
>>> re.findall(r"1[3456789]\d{9}", "18709319726564886165jkgukgi136986155464")
['18709319726', '13698615546']
>>>
>>> [a-zA-Z_0-9]{4,20}@openlab\.com
  File "<stdin>", line 1
    [a-zA-Z_0-9]{4,20}@openlab\.com
                               ^
SyntaxError: unexpected character after line continuation character
>>> re.match(r"[a-zA-Z_0-9]{4,20}@openlab\.com", "zhangbaoning@openlab.com")
<re.Match object; span=(0, 24), match='zhangbaoning@openlab.com'>
>>> re.match(r"[a-zA-Z_0-9]{4,20}@openlab.com", "zhangbaoning@openlabacom")
<re.Match object; span=(0, 24), match='zhangbaoning@openlabacom'>
>>>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

麒麟V10安装Redis6.2.6

1、下载redis安装包 Redis各版本下载&#xff1a;https://download.redis.io/releases/ 2、将下载后的.tar.gz压缩包上传到到服务器自定义文件夹下 3、 解压文件 tar -zxvf redis-6.2.6.tar.gzmv redis-6.2.6 redis4、安装redis 在redis文件夹下输入make指令 cd /opt/redi…

【React】react 初学增删改查购物车案例

界面 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>react-购物车案例</title><…

华为OD机试 - 机器人搬砖 - 二分查找(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

centos 7.9 nginx本地化安装,把镜像改成阿里云

1.把centos7.9系统切换到阿里云的镜像源 1.1.先备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2.下载新的CentOS-Base.repo配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo特别…

css面试题--定位与浮动

1、为什么需要清除浮动&#xff1f; 在非IE浏览器下&#xff0c;容器不设高度且子元素浮动时&#xff0c;容器高度不能被内容撑开&#xff0c;内容会溢出到容器外面而影响布局。这种现象被称为浮动。 浮动的原理&#xff1a;浮动元素脱离文档流&#xff0c;不占用空间&#xff…

39-性能分析(下):APIServer性能测试和调优实战

在API上线之前&#xff0c;我们需要知道API的性能&#xff0c;以便知道API服务器所能承载的最大请求量、性能瓶颈&#xff0c;再根据业务对性能的要求&#xff0c;来对API进行性能调优或者扩缩容。通过这些&#xff0c;可以使API稳定地对外提供服务&#xff0c;并且让请求在合理…

java算法day49 | 动态规划part10 ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {//1、定义dp数组&#xff0c;表示第i天持股票的状态dp[i][0]表示持有股票dp[i][1]表示不持有股票int[][] dpnew int[prices.length][2];//3、初始化数组dp[0][1]0;dp[0][0]-prices[0];//4、遍历顺…

Linux--进程的概念(二)

目录 一、进程的优先级1.1 基本概念1.2 查看进程优先级1.3 PRI&NI1.4 如何更改进程的优先级1.4.1 用top命令更改进程的nice1.4.2 用renice命令更改进程的nice 1.5 其他概念 二、环境变量2.1 基本概念2.2 常见的环境变量2.3 查看环境变量2.3.1 测试PATH2.3.2 测试HOME2.3.3 …

Android14之智能指针的弱引用、强引用、弱指针、强指针用法区别及代码实例(二百零五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

LTC4054 充电指示灯转灯电路

由于这个芯片只有CHRG# 引脚&#xff0c;不像4056 那样两个引脚能分别接一个LED&#xff0c;要实现充电指示就必须自己整整外围电路。先说明一下&#xff0c;网上常见的这种接法&#xff1a; 一个LED 直连CHRG# 引脚&#xff0c;我试了是不行的&#xff0c;即使充满电&#xff…

【国际会议火热征稿】2024年应用经济学、管理科学与社会国际学术会议(ICAEMSS 2024)

会议简介 2024年应用经济学、管理科学与社会国际学术会议将聚焦应用经济学和管理科学的前沿问题&#xff0c;深入探讨社会变革中的经济管理与科学应用。参会者将分享最新研究成果&#xff0c;交流学术观点&#xff0c;共同探索经济、管理与社会的融合发展之路。本次会议旨在推…

Zotero + Markdown论文工作流

文章目录 关键步骤Zotero Better BibTeXObsidian Citekey Plugin & WrittingPandoc Export 关键步骤 在Zotero中&#xff0c;使用Better BibTex生成.bib文件&#xff0c;用于提取索引信息。由于后续需要使用pandoc将markdown转换为word或者LaTeX&#xff0c;所以Better Bi…

记Kubernetes(k8s):访问 Prometheus UI界面:Warning: Error fetching server time

记Kubernetes&#xff08;k8s&#xff09;&#xff1a;访问 Prometheus UI界面:Warning: Error fetching server time 1、报错详情2、解决3、再次访问 PrometheusUI界面 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、报错详情 Warning:…

Linux启动过程、启动脚本目录介绍及检测思路分析

一、Linux系统启动过程 1、启动流程&#xff1a; Linux系统的启动过程可以分为5个阶段&#xff1a;内核的引导、运行init、系统初始化、建立终端、用户登录系统。 2、init程序的类型&#xff1a; 1&#xff09;SysV&#xff1a;init&#xff0c;CentOS 5之前&#xff0c;配置文…

socuretree远程分支没有同步问题

1、选择命令行模式 2、输入git remote update origin --prune 并回车 git remote update origin --prune 是 Git 命令&#xff0c;用于从远程仓库更新本地分支&#xff0c;并删除本地已经不存在于远程仓库的远程跟踪分支

ADP-2-20+ 信号调节 20MHz-2GHzRF功分器 合路器

ADP-2-20 是一款由Mini-Circuits公司出产的功分器&#xff08;power divider&#xff09;。这款功分器的工作温度规模为-40C至85C&#xff0c;贮存温度规模为-55C至100C。作为分路器&#xff0c;它的电源输入最高可达1W&#xff0c;内部功耗最大为0.125W。假如超越这些限制&…

【Cesium学习笔记】一、加载Cesium并更换天地图底图

【Cesium学习笔记】一、加载Cesium 一、加载Cesium二、用Viewer显示地球三、更换天地图底图 Ps:本教程所有代码于同一个工程中&#xff0c;运行npm run dev默认首页为App.vue&#xff0c;只需替换App.vue的内容即可切换不同页面。 一、加载Cesium 本项目使用nvm管理node版本&…

李沐23_LeNet——自学笔记

手写的数字识别 知名度最高的数据集&#xff1a;MNIST 1.训练数据&#xff1a;50000 2.测试数据&#xff1a;50000 3.图像大小&#xff1a;28✖28 4.10类 总结 1.LeNet是早期成功的神经网络 2.先使用卷积层来学习图片空间信息 3.使用全连接层来转换到类别空间 代码实现…

Al+医学,用这个中文多模态医学大模型帮你看胸片

随着人工智能技术的飞速发展&#xff0c;AI 在医学领域的应用已经成为现实。特别是在医学影像诊断方面&#xff0c;AI 大模型技术展现出了巨大的潜力和价值&#xff0c;但目前针对中文领域医学大多模态大模型还较少。 今天为大家介绍的这款 XrayGLM&#xff0c;就是由澳门理工…

HackTheBox-Machines--Soccer

文章目录 1 信息收集2 CVE-2021-45010 漏洞利用3 横向移动4 权限提升 Soccer 测试过程 1 信息收集 a.端口扫描&#xff1a;发现22、80、9091端口    b.目录扫描&#xff1a;http://soccer.htb/tiny/    c.子域爆破    d.信息泄漏 nmap -sC -sV 10.129.87.151端口扫描结…