广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python正则表达式对字符串的查找匹配
  • 753
分享到

python正则表达式对字符串的查找匹配

2024-04-02 19:04:59 753人浏览 薄情痞子

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

摘要

目录常用的RegEx基础语法常用的RegEx函数以下为部分示例:总结python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语

python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明

常用的RegEx基础语法

语法说明
\d匹配一个数字字符
\D匹配一个非数字字符
\s匹配任何不可见字符(空格、制表符、换行符等)
\S匹配任何可见字符
\w匹配任何单词字符
\W匹配任何非单词字符
.匹配所有字符
^字符串开头开始匹配,比如^\d表示以一个数字字符开头
$从字符串末尾开始匹配,比如\d$表示以一个数字字符结尾
*匹配前一个字符任意次
+匹配前一个字符一次或多次
?匹配前一个字符零次或一次
{m}匹配前一个字符m次
{m,n}匹配前一个字符最少m次最多n次
\转义字符
[]比如[a-z]表示匹配从a到z之间的所有字符串
|或,比如A|B表示匹配A或B
()精确匹配括号中指定的模式

常用的RegEx函数

函数说明
search从字符串中进行搜索,成功则返回匹配目标,失败则返回None
match从字符串开头进行匹配,成功则返回匹配目标,失败则返回None
fullmatch匹配整个字符串
split根据模式分割字符串
findall查找字符串中所有非重叠匹配
finditer类似于findall,但返回Python迭代器
sub用提供的字符串替代匹配模式

以下为部分示例:

对于split函数,我们在对字符串进行分割的时候可以直接调用split方法,再次不再进行

>>> import re#导入包
>>> a='xiaoming:wo jiao xiaoming,wo de dianhua shi +86-666666'
>>> print(re.search(pattern='\d+\W\d+',string=a))
<re.Match object; span=(45, 54), match='86-666666'>#此处输出的时一个match对象
 
>>> mp=re.search(pattern='\d+\W\d+',string=a)#查找电话号码
>>> print(mp.group())#使用group方法获取于指定模式相匹配的字符串
86-666666
>>> print(mp.start())#获取第一个匹配字符串的索引
45
>>> print(mp.end())#获取匹配字符串的
54
>>> print(mp.span())#获取索引范围
(45, 54)
 
>>> print(re.findall(pattern='\w+',string=a))
['xiaoming', 'wo', 'jiao', 'xiaoming', 'wo', 'de', 'dianhua', 'shi', '86', '666666']
 
>>> m_sub=re.sub(pattern='\w+:',string=a,repl='xiaohong:')#模式替代,使用repl传入的字符串替代匹配到的第一个字符串
>>> print(m_sub)
xiaohong:wo jiao xiaoming,wo de dianhua shi +86-6666
 
#编译模式
>>> p=re.compile('\d{6}')#预先设定好匹配的模式
>>> m1=p.search(a)#对预先设定好的模式调用查找
>>> print(m1.group())获取查找到的字符串
666666

不区分大小写匹配字符

#! /usr/bin/python3
import re
rebocop = re.compile(r'rebocop', re.I)
match = rebocop.search('ReboCop is part man, part Machine, all cop.').group()
print(match)

管理复杂的正则表达式

如果您需要匹配的文本模式很简单,则正则表达式很好。但是匹配复杂的文本模式可能需要冗长,复杂的正则表达式。您可以通过告诉 re.compile() 函数来缓解这种情况忽略正则表达式字符串中的空格和注释。可以通过将变量 re.VERBOSE 作为传递来启用此“详细模式” re.compile()的第二个参数。

#! /usr/bin/python3
import re

phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))?   # area code
    (\s|-|\.)?           # separator
    \d{3}                # first 3 digits
    (\s|-|\.)            # separator
    \d{4}                # last 4 digits
    (\s*(ext|x|ext.)\s*\d{2,5})?   #extension
    )''', re.VERBOSE)

请注意前一个示例如何使用三引号语法(’’’)创建一个多行字符串,以便您可以将正则表达式定义分布在多行上,使其更加清晰。正则表达式字符串中的注释规则与常规Python代码:#符号及其后的所有内容线被忽略。此外,正则表达式的多行字符串内的额外空格不被视为要匹配的文本模式的一部分。这使您可以组织正则表达式,以便更容易阅读。

从粘贴板的文字中提取邮箱和手机号码

#! /usr/bin/python3
# phoneAndEmail.py - Finds phone numbers and email address on the chipboard.

import pyperclip, re

americaPhoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))?   # area code
    (\s|-|\.)?           # separator
    (\d{3})              # first 3 digits
    (\s|-|\.)            # separator
    (\d{4})              # last 4 digits
    (\s*(ext|x|ext.)\s*(\d{2,5}))?   # extension
    )''', re.VERBOSE)    

chinesePhoneRegex = re.compile(r'1\d{10}')

emailPhoneRegex   = re.compile(r'''(
        [a-zA-Z0-9._%+-]+      # username
        @                      # @ symbol
        [a-zA-Z0-9.-]+         # domain name
        (\.[a-zA-Z]{2,4})      # dot-something
        )''', re.VERBOSE)


# Find matches in clipboard text.
text = str(pyperclip.paste())
matches = []
for groups in americaPhoneRegex.findall(text):
    phoneNum = '-'.join([groups[1], groups[3], groups[5]])
    if groups[8] != '':
        phoneNum += ' x' + groups[8]
    matches.append(phoneNum)

for groups in emailPhoneRegex.findall(text):
    matches.append(groups[0])

for groups in chinesePhoneRegex.findall(text):
    matches.append(groups[0])

# copy results the clipboard. 
if len(matches) > 0:
    pyperclip.copy('\n'.join(matches))
    print('Copied to clipboard:')
    print('\n'.join(matches))
else:
    print('No phone numbers or email addresses found.')

总结

到此这篇关于python正则表达式对字符串的查找匹配的文章就介绍到这了,更多相关python字符串查找匹配内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python正则表达式对字符串的查找匹配

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

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

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

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

下载Word文档
猜你喜欢
  • python正则表达式对字符串的查找匹配
    目录常用的RegEx基础语法常用的RegEx函数以下为部分示例:总结Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语...
    99+
    2022-11-11
  • Python正则表达式匹配字符串中的数字
    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下1.使用“\d+”匹配全数字...
    99+
    2023-06-01
  • 怎么使用python正则表达式查找字符串
    使用Python的re模块来使用正则表达式查找字符串。首先,导入re模块:```pythonimport re```然后,定义一个正...
    99+
    2023-08-18
    python
  • Java正则表达式循环匹配字符串方式
    目录正则表达式循环匹配字符串Java匹配正则表达式大全我们先举个例子来看看Java匹配正则表达式匹配表达式的特殊情况正则表达式循环匹配字符串 public static void m...
    99+
    2022-11-13
  • Python怎么在字符串中找到正则表达式所匹配的所有子串
    这篇“Python怎么在字符串中找到正则表达式所匹配的所有子串”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么...
    99+
    2023-06-08
  • 正则表达式之字符串模式匹配实例详解
    目录前言什么是正则表达式字符范围匹配元字符多次重复匹配定位匹配贪婪模式与非贪婪模式表达式分组结语前言 今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会...
    99+
    2022-11-13
  • 如何使用Python中的正则表达式进行字符串匹配
    如何使用Python中的正则表达式进行字符串匹配正则表达式是一种强大的字符串模式匹配工具,它能够在文本中查找特定的模式,使程序能够更快速、更灵活地处理字符串。在Python中,我们可以使用re模块来操作正则表达式。本文将介绍如何使用Pyth...
    99+
    2023-10-22
    Python 正则表达式 字符串匹配
  • 如何进行正则表达式匹配字符串的实现
    如何进行正则表达式匹配字符串的实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用正则表达式最常用的是考虑实现正则表达式匹配的判断,在实际工作中经常会遇到什么...
    99+
    2023-06-17
  • java正则表达式匹配字符串的方法是什么
    在Java中,我们可以使用正则表达式来匹配字符串,可以使用以下步骤实现:1. 导入`java.util.regex`包,该包包含了用...
    99+
    2023-08-09
    java
  • C#中如何使用正则表达式和字符串匹配
    C#中如何使用正则表达式和字符串匹配正则表达式是一种强大的文本处理工具,它可以帮助我们有效地在字符串中进行模式匹配和提取。在C#中,通过使用System.Text.RegularExpressions命名空间下的Regex类,我们可以轻松地...
    99+
    2023-10-22
    正则表达式 (Regex) 字符串匹配 (string matching) C#编程 (C# Programming)
  • java怎么用正则表达式匹配与提取字符串
    本文小编为大家详细介绍“java怎么用正则表达式匹配与提取字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“java怎么用正则表达式匹配与提取字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先给出一个匹...
    99+
    2023-07-02
  • java如何用正则表达式匹配与提取字符串
    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法。 首先给出一个匹配字符串的例子(判断line是否符...
    99+
    2022-11-13
  • 正则表达式怎么匹配多个字符
    正则表达式可以使用特殊符号来匹配多个字符:1. 使用重复符号:可以使用`*`来匹配零个或多个字符,使用`+`来匹配一个或多个字符,使用``来匹配零个或一个字符。例如,正则表达式`ab*c`可以匹配字符串"ac"、"abc"、"abbc"...
    99+
    2023-08-11
    正则表达式
  • 正则表达式匹配不包含某些字符串的技巧
    正则表达式提供了一些技巧来匹配不包含某些字符串的情况。下面是一些常用的技巧:1. 使用否定预查:否定预查通过在匹配的字符串前面加上`...
    99+
    2023-08-09
    正则表达式
  • python使用正则表达式匹配字符串开头并打印示例
    本文实例讲述了python使用正则表达式匹配字符串开头并打印的方法。分享给大家供大家参考,具体如下: import re s="name=z1hangshan username=fff url=www....
    99+
    2022-06-04
    示例 字符串 开头
  • 用正则表达式匹配字符串中汉字及中文标点符号
    目录问题:比如:Ps:补充:总结问题: 在写项目时遇到需要匹配字符串中所有的汉字并且包括简单的中文标点符号 比如: 匹配下面这个完成的字符串 let str = '上传文件,你好呀,...
    99+
    2022-11-13
  • Java如何使用正则表达式查找指定字符串
    对于一个文件名的使用经常要做一些判断,比如文件名是否是指定的名字,或者文件是否为指定的类型,或者筛选出以指定后缀结尾的文件名,等等 这时就可以提取出文件名的字符串进行比较判断筛选 在...
    99+
    2022-11-13
  • java利用正则表达式如何实现查找字符串
    java利用正则表达式如何实现查找字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:Hello.java:package hello;import ...
    99+
    2023-05-31
    java 正则表达式 字符串
  • C#中怎么利用正则表达式匹配相关字符串
    今天就跟大家聊聊有关C#中怎么利用正则表达式匹配相关字符串,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用C#中使用正则表达式System.Text.RegularExpressi...
    99+
    2023-06-17
  • java使用正则表达式匹配不包含某个规则的字符串
    测试数据:例如上面这几条简单的日志条目,我们想实现两个目标:把8号的数据过滤掉;把那些不包含robots.txt字符串的条目给找出来(只要Url中包含robots.txt的都给过滤掉)。前瞻的语法是:(!匹配模式)我们先来实现第一个目标——...
    99+
    2014-06-16
    java 正则表达式 不包含 规则 字符串
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作