博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python正则表达式入门一
阅读量:4292 次
发布时间:2019-05-27

本文共 1548 字,大约阅读时间需要 5 分钟。

正则表达式入门导包

import re

常用示例

  • 以某个字符串开头
^
  • 任意字符
.

就是一个英文的句号

  • 任意多次
*

示例

line = "tpr123"regex_str = "^t.*"if re.match(regex_str, line):    print("匹配成功")

结果

D:\pythonworkspace\regexp\venv\Scripts\python.exe D:/pythonworkspace/regexp/test/test.py匹配成功
  • 以某个值为结尾
$

示例

line = "tpr123"regex_str = "^t.*3$"if re.match(regex_str, line):    print("匹配成功")

结果

D:\pythonworkspace\regexp\venv\Scripts\python.exe D:/pythonworkspace/regexp/test/test.py匹配成功

示例

line = "tpr123"regex_str = "^t.*4$"if re.match(regex_str, line):    print("匹配成功")

无结果

  • 非贪婪匹配
?

示例:有一个字符串”line = “tpyyyyyyyppr123” 把 pyyyyyyyp取来出。使用正则表达式的方式。

错误示例:

line = "tpyyyyyyyppr123"regex_str = ".*(p.*p).*"match_result = re.match(regex_str, line)if match_result:    print(match_result.group(1))

运行结果

D:\pythonworkspace\regexp\venv\Scripts\python.exe D:/pythonworkspace/regexp/test/test.pypp

原因: 正则表达式在匹配的时候是贪婪匹配的,是从字符串的右边开始对比字符串是否符合正则表达式。 因此取出来的就是pp。下面我们要做的就是让他从左右取出来。

示例 :

import reline = "tpyyyyyyyppr123"regex_str = ".*?(p.*p).*"match_result = re.match(regex_str, line)if match_result:    print(match_result.group(1))

运行结果

D:\pythonworkspace\regexp\venv\Scripts\python.exe D:/pythonworkspace/regexp/test/test.pypyyyyyyypp

结果还是不符合要求,他把结尾的两个p都取出来了。 是因为 .*p这个正则也是符合yyyypp的。如果有三个p 也都会匹配出来。

示例

import reline = "tpyyyyyyypppr123"regex_str = ".*?(p.*?p).*"match_result = re.match(regex_str, line)if match_result:    print(match_result.group(1))

运行结果

D:\pythonworkspace\regexp\venv\Scripts\python.exe D:/pythonworkspace/regexp/test/test.pypyyyyyyyp

这样结果就符合我们的要求了。

? 的非贪婪模式不只是能把匹配从右开始,还能把当匹配到第一个符合要求的值匹配出来。 就不会在接着匹配了。

转载地址:http://pdkws.baihongyu.com/

你可能感兴趣的文章
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
全面理解Java内存模型
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>