python re正则表达式模块(Regular Expression)

模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等

复习一下基本的正则表达式

 .:匹配除了换行符以为的任意单个字符

 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式

+:匹配位于+之前的一个或者多个字符

立即学习“Python免费学习笔记(深入)”;

 |:匹配位于|之前或者之后的字符

 ^:匹配行首

 $:匹配行尾

 ?:匹配位于?之前的零个或者一个字符,不匹配多个字符

 :表示 之后的为转义字符

 []:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字

 ():将位于()之内的的内容当作一个整体

 {}:按{}中的次数进行匹配,100[0-9]{3}表示在100之后任意匹配一个3位数(100-999)

python中以开头的元字符:

特殊序列符号
意义 A
只在字符串开始进行匹配 Z
只在字符串结尾进行匹配
匹配位于开始或结尾的空字符串 B
匹配不位于开始或结尾的空字符串 d
相当于[0-9] D
相当于[^0-9] s
匹配任意空白字符:[] S
匹配任意非空白字符:[^] w
匹配任意数字和字母:[a-zA-Z0-9] W
匹配任意非数字和字母:[^a-zA-Z0-9]

正则表达式语法表

语法 意义 说明 “.” 任意字符
“^” 字符串开始 ‘^hello’匹配’helloworld’而不匹配’aaaahellobbb’ “$” 字符串结尾 与上同理 “*” 
0 个或多个字符(贪婪匹配)
匹配chinaunix “+”
1 个或多个字符(贪婪匹配)
与上同理
“?”
0 个或多个字符(贪婪匹配)
与上同理
*?,+?,??
以上三个取第一个匹配结果(非贪婪匹配) 匹配
{m,n}
对于前一个字符重复m到n次,{m}亦可
a{6}匹配6个a、a{2,4}匹配2到4个a {m,n}?
对于前一个字符重复m到n次,并取尽可能少
‘aaaaaa’中a{2,4}只会匹配2个 “\”
特殊字符转义或者特殊序列
[]
表示一个字符集 [0-9]、[a-z]、[A-Z]、[^0] “|”
或 A|B,或运算 (…)
匹配括号中任意表达式
(?#…)
注释,可忽略
(?=…)
Matches if … matches next, but doesn’t consume the string.
‘(?=test)’  在hellotest中匹配hello (?!…)
Matches if … doesn’t match next.
‘(?!=test)’  若hello后面不为test,匹配hello
(?
Matches if preceded by … (must be fixed length).
‘(?)test’  在hellotest中匹配test
(?
Matches if not preceded by … (must be fixed length).
‘(?test’  在hellotest中不匹配test

匹配的标志和含义

标志 含义 re.I 忽略大小写 re.L 根据本地设置而更改w,W,,B,s,S的匹配内容 re.M 多行匹配模式 re.S 使“.”元字符匹配换行符 re.U 匹配Unicode字符 re.X 忽略需要匹配模式中的空格,并且可以使用”#”号注释

文本内容(提取Linux下的password文件)

man:x:6:12:man:/var/cache/man:/bin/nologin

登录后复制

re模块中有3个搜索函数,每个函数都接受3个参数(匹配模式,要匹配的字符串,进行匹配的标志),如果匹配到了就返回一个对象实例,么有就返会None.

findall():用于在字符串中查找符合正则表达式的字符串,并返回这些字符串的列表

search():搜索整个字符串,返回对象实例

match():只从第一个字符开始匹配,后面的不再匹配,返回对象实例

lovelinux@LoveLinux:~/py/boke$ cat text man:x:6:12:man:/var/cache/man:/bin/shlovelinux@LoveLinux:~/py/boke$ cat test.py#/usr/bin/env python#coding:utf-8import rewith open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).end() lovelinux@LoveLinux:~/py/boke$ python test.py None34lovelinux@LoveLinux:~/py/boke$ vim test.pylovelinux@LoveLinux:~/py/boke$ python test.py None

登录后复制

返回是对象实例有2个方法,

start():返回记录匹配到字符的开始索引 

end():返回记录匹配到字符的结束索引

lovelinux@LoveLinux:~/py/boke$ python test.py None3134lovelinux@LoveLinux:~/py/boke$ cat test.py #/usr/bin/env python#coding:utf-8import rewith open('text','r') as txt: f = txt.read() print re.match('bin',f) print re.search('bin',f).start() print re.search('bin',f).end()

登录后复制

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2290270.html

(0)
上一篇 2025年2月28日 00:13:18
下一篇 2025年2月28日 00:13:36

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 总结python Django在开发中的使用经验

    这次给大家带来总结python python在开发中的使用经验,在python django在开发中的python有哪些,下面就是实战案例,一起来看一下。 大三的时候第一次接触 Django,从真正使用 Django 做项目到现在也快 4 …

    编程技术 2025年4月4日
    100
  • Java 框架在其他编程语言中是否易于集成?

    java 框架可在多语言环境中集成,受平台兼容性、语言支持和中间层影响。平台兼容性:java 框架在 jvm 上运行,与 jvm 兼容的语言兼容。语言支持:部分 java 框架支持其他语言,如 groovy 和 kotlin。中间层:jna…

    2025年4月2日
    100
  • java框架与人工智能的集成应用

    java 框架与 ai 集成使应用程序能够利用 ai 技术,包括自动化任务、提供个性化体验和支持决策制定。通过直接调用或使用第三方库,java 框架可与 h2o.ai、weka 等框架无缝集成,从而实现数据分析、预测建模、神经网络训练等功能…

    2025年4月2日
    100
  • java编程接口怎么起头

    Java 编程接口 (API) 是一组预定义的方法和类,用于在应用程序中利用其他软件的的功能。开始使用 API 的步骤包括:了解 API 文档、导入 API、创建 API 对象、调用 API 方法和处理结果。例如,Java Collecti…

    2025年4月2日
    100
  • java怎么调用python

    通过 Jython、JPython、Hadoop Pig 或 Java Native Interface (JNI),可以从 Java 调用 Python 代码,各方法各有优势和劣势,具体选择取决于用例和要求。 如何从 Java 调用 Py…

    2025年4月2日
    100
  • java转python怎么转

    java 转 python 如何从 Java 转到 Python? 从 Java 转到 Python 的过程需要考虑以下步骤: 1. 学习 Python 基础 理解 Python 语法、数据类型、控制流和函数。了解 Python 的包和库生…

    编程技术 2025年4月2日
    100
  • java框架在人工智能和机器学习项目中的应用

    java 框架在人工智能和机器学习项目中的应用java 框架为 ai/ml 解决方案提供了强大的工具和库,流行的框架包括 tensorflow、pytorch、h2o.ai 和 weka。例如,使用 tensorflow,开发者可以创建图像…

    2025年4月2日
    100
  • Dubbo 在微服务架构中的应用场景与优势?

    微服务最佳选择:dubbo轻量级且高性能的 dubbo 框架是微服务架构的首选,支持多种语言并提供分布式系统开发所需的功能。其优势包括高性能、可扩展性、易用性和庞大的生态系统。在实战中,dubbo 可用于构建分布式系统,通过服务解耦和异构系…

    2025年4月2日
    100
  • java可变参数怎么遍历

    Java的可变参数(变长参数)允许函数接受任意数量的参数。遍历这些参数的语法:for (数据类型 参数名 : 可变参数) { // 遍历可变参数的每个元素} Java 可变参数遍历 Java 中的可变参数(也称为变长参数)允许函数接受任意数…

    2025年4月2日
    100
  • java框架如何赋能人工智能发展?

    java 框架通过以下方式赋能 ai:数据管理和处理:spark、hadoop 和 tensorflow data 用于处理和存储 ai 数据。机器学习和深度学习:tensorflow、scikit-learn 和 opencv 用于构建和…

    2025年4月2日
    100

发表回复

登录后才能评论