广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python利用正则表达式提取字符串
  • 482
分享到

python利用正则表达式提取字符串

字符串正则表达式python 2022-06-04 18:06:15 482人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串。日志分析会遇到这种情况,下面我会分别讲一下对应的方法。

前言

正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串。日志分析会遇到这种情况,下面我会分别讲一下对应的方法。

一、单个位置的字符串提取

这种情况我们可以使用(.+?)这个正则表达式来提取。 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list。

代码如下:


import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#
输出['123']

1.1贪婪和非贪婪匹配

如果我们有一个字符串”a123b456b”,如果我们想匹配a和最后一个b之间的所有值而非a和第一个出现的b之间的值,可以用?来控制正则贪婪和非贪婪匹配的情况。

代码如下:


import re
str = "a123b456b"

print re.findall(r"a(.+?)b", str)
#输出['123']#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况

print re.findall(r"a(.+)b", str)
#输出['123b456']

print re.findall(r"a(.*)b", str)
#输出['123b456']

1.2多行匹配

如果你要多行匹配,那么需要加上re.S和re.M标志. 加上re.S后。将会匹配换行符,默认.不会匹配换行符。

代码如下:


str = "a23bna34b"

re.findall(r"a(d+)b.+a(d+)b", str)
#输出[]
#因为不能处理str中间有n换行的情况

re.findall(r"a(d+)b.+a(d+)b", str, re.S)
#s输出[('23', '34')]

加上re.M后,^$标志将会匹配每一行,默认^和$只会匹配第一行。

代码如下:


str = "a23bna34b"

re.findall(r"^a(d+)b", str)
#输出['23']

re.findall(r"^a(d+)b", str, re.M)
#输出['23', '34']

二、连续多个位置的字符串提取

这种情况我们可以使用(?P<name>…)这个正则表达式来提取。举例,如果我们有一行WEBserver的access日志:'192.168.0.1 25/Oct/2012:14:46:34 "GET /api Http/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"',我们想提取这行日志里面所有的内容,可以写多个(?P<name>expr)来提取,其中name可以更改为你为该位置字符串命名的变量,expr改成提取位置的正则即可。

代码如下:


import re
line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" 
"Mozilla/5.0"'
reg = re.compile('^(?P<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)" 
(?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"')
regMatch = reg.match(line)
linebits = regMatch.groupdict()
print linebits
for k, v in linebits.items() :
 print k+": "+v

输出的结果为:


status: 200
referrer: 
request: GET /api HTTP/1.1
user_agent: Mozilla/5.0
date: 25/Oct/2012:14:46:34size: 44
remote_ip: 192.168.0.1

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: python利用正则表达式提取字符串

本文链接: https://www.lsjlt.com/news/13937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python利用正则表达式提取字符串
    前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串。日志分析会遇到这种情况,下面我会分别讲一下对应的方法。...
    99+
    2022-06-04
    字符串 正则表达式 python
  • Python利用正则表达式从字符串提取数字
    目录前言利用正则表达式从字符串提取数字附python正则表达式抽取文本中的时间日期总结前言 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Pyt...
    99+
    2022-11-13
  • python怎么用正则表达式提取字符串
    今天小编给大家分享一下python怎么用正则表达式提取字符串的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。用正则表达式提取字...
    99+
    2023-07-05
  • python如何用正则表达式提取字符串
    目录用正则表达式提取字符串1. 单个位置的字符串提取2. 连续多个位置的字符串提取用正则表达式提取字符串中的整数总结用正则表达式提取字符串 在日常工作中经常遇见在文本中提取特定位置字...
    99+
    2023-03-02
    python正则表达式 python提取字符串 正则提取字符串
  • Python中怎么利用正则表达式替换字符串
    Python中怎么利用正则表达式替换字符串,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。替换所有匹配的子串用newstring替换subject中所有与正则表达...
    99+
    2023-06-17
  • java怎么用正则表达式匹配与提取字符串
    本文小编为大家详细介绍“java怎么用正则表达式匹配与提取字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“java怎么用正则表达式匹配与提取字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先给出一个匹...
    99+
    2023-07-02
  • java如何用正则表达式匹配与提取字符串
    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法。 首先给出一个匹配字符串的例子(判断line是否符...
    99+
    2022-11-13
  • mysql 正则表达式 提取 指定字符
    目录 1.REGEXP 正则表达式2.REGEXP_REPLACE3.补充参考链接 1.REGEXP 正则表达式 # 查找字段中包含数字和字母的所有记录 SELECT 字段1 FROM 表1 where 字段1 R...
    99+
    2023-08-25
    mysql 正则表达式 数据库
  • 怎么使用java正则表达式获取字符串
    要使用Java正则表达式获取字符串,可以按照以下步骤进行操作:1. 导入`java.util.regex`包。在Java中,正则表达...
    99+
    2023-09-05
    java
  • Java字符串 正则表达式详解
    目录一、规则表1.字符2.字符类 .3.边界匹配符4.逻辑操作符5.量词二、Pattern类1.Pattern类的实例获取—compile方法2.split方法3.Pattern中匹...
    99+
    2022-11-12
  • Python正则表达式匹配字符串中的数字
    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下1.使用“\d+”匹配全数字...
    99+
    2023-06-01
  • 怎么使用python正则表达式查找字符串
    使用Python的re模块来使用正则表达式查找字符串。首先,导入re模块:```pythonimport re```然后,定义一个正...
    99+
    2023-08-18
    python
  • Python字符串与正则表达式详细介绍
    目录一、字符串相关操作 二、正则表达式相关操作一、字符串相关操作  1.统计所输入字符串中单词的个数,单词之间用空格分隔。其运行效果如下图所示。 s=input(...
    99+
    2022-11-13
  • mysql字符串正则表达式及说明
    目录概述正则表达式运算符正则表达式语法概述 名称描述NOT REGEXP否定的REGEXPREGEXP字符串是否匹配正则表达式RLIKE字符串是否匹配正则表达式 正则表达式是指定复杂...
    99+
    2022-11-13
  • java利用正则表达式如何实现查找字符串
    java利用正则表达式如何实现查找字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:Hello.java:package hello;import ...
    99+
    2023-05-31
    java 正则表达式 字符串
  • python正则表达式对字符串的查找匹配
    目录常用的RegEx基础语法常用的RegEx函数以下为部分示例:总结Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语...
    99+
    2022-11-11
  • 怎么使用Java正则表达式匹配字符串并提取中间值
    今天小编给大家分享一下怎么使用Java正则表达式匹配字符串并提取中间值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言有时...
    99+
    2023-07-02
  • C#中怎么利用正则表达式匹配相关字符串
    今天就跟大家聊聊有关C#中怎么利用正则表达式匹配相关字符串,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用C#中使用正则表达式System.Text.RegularExpressi...
    99+
    2023-06-17
  • python用正则表达式提取/匹配中文汉字
    目录python用正则表达式提取中文python正则如何匹配中文汉字总结python用正则表达式提取中文 Python re正则匹配中文,其实非常简单,把中文的unicode字符串转...
    99+
    2022-11-11
  • 正则表达式不包含特定字符串
    要实现一个正则表达式不包含特定字符串的模式,可以使用“负向预查”来实现。负向预查是一种零宽度断言,可以在匹配之前或之后断言某个位置不...
    99+
    2023-08-18
    正则表达式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作