最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python正則表達(dá)式對字符串的查找匹配

 更新時間:2022年09月29日 10:54:50   作者:愛打羽毛球的小怪獸  
正則表達(dá)式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”),下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式對字符串的查找匹配的相關(guān)資料,需要的朋友可以參考下

Python中的正則表達(dá)式要用到re模塊,下面先介紹一下正則表達(dá)式需要用到的特殊字符和說明

常用的RegEx基礎(chǔ)語法

語法說明
\d匹配一個數(shù)字字符
\D匹配一個非數(shù)字字符
\s匹配任何不可見字符(空格、制表符、換行符等)
\S匹配任何可見字符
\w匹配任何單詞字符
\W匹配任何非單詞字符
.匹配所有字符
^從字符串開頭開始匹配,比如^\d表示以一個數(shù)字字符開頭
$從字符串末尾開始匹配,比如\d$表示以一個數(shù)字字符結(jié)尾
*匹配前一個字符任意次
+匹配前一個字符一次或多次
?匹配前一個字符零次或一次
{m}匹配前一個字符m次
{m,n}匹配前一個字符最少m次最多n次
\轉(zhuǎn)義字符
[]比如[a-z]表示匹配從a到z之間的所有字符串
|或,比如A|B表示匹配A或B
()精確匹配括號中指定的模式

常用的RegEx函數(shù)

函數(shù)說明
search從字符串中進行搜索,成功則返回匹配目標(biāo),失敗則返回None
match從字符串開頭進行匹配,成功則返回匹配目標(biāo),失敗則返回None
fullmatch匹配整個字符串
split根據(jù)模式分割字符串
findall查找字符串中所有非重疊匹配
finditer類似于findall,但返回Python迭代器
sub用提供的字符串替代匹配模式

以下為部分示例:

對于split函數(shù),我們在對字符串進行分割的時候可以直接調(diào)用split方法,再次不再進行

>>> import re#導(dǎo)入包
>>> 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}')#預(yù)先設(shè)定好匹配的模式
>>> m1=p.search(a)#對預(yù)先設(shè)定好的模式調(diào)用查找
>>> print(m1.group())獲取查找到的字符串
666666

不區(qū)分大小寫匹配字符

#! /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)

管理復(fù)雜的正則表達(dá)式

如果您需要匹配的文本模式很簡單,則正則表達(dá)式很好。但是匹配復(fù)雜的文本模式可能需要冗長,復(fù)雜的正則表達(dá)式。您可以通過告訴 re.compile() 函數(shù)來緩解這種情況忽略正則表達(dá)式字符串中的空格和注釋??梢酝ㄟ^將變量 re.VERBOSE 作為傳遞來啟用此“詳細(xì)模式” re.compile()的第二個參數(shù)。

#! /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)

請注意前一個示例如何使用三引號語法(’’’)創(chuàng)建一個多行字符串,以便您可以將正則表達(dá)式定義分布在多行上,使其更加清晰。正則表達(dá)式字符串中的注釋規(guī)則與常規(guī)Python代碼:#符號及其后的所有內(nèi)容線被忽略。此外,正則表達(dá)式的多行字符串內(nèi)的額外空格不被視為要匹配的文本模式的一部分。這使您可以組織正則表達(dá)式,以便更容易閱讀。

從粘貼板的文字中提取郵箱和手機號碼

#! /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.')

總結(jié)

到此這篇關(guān)于python正則表達(dá)式對字符串的查找匹配的文章就介紹到這了,更多相關(guān)python字符串查找匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Django的通用視圖中處理Context的方法

    在Django的通用視圖中處理Context的方法

    這篇文章主要介紹了在Django的通用視圖中處理Context的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Django接收照片儲存文件的實例代碼

    Django接收照片儲存文件的實例代碼

    這篇文章主要介紹了Django接收照片儲存文件的實例代碼 ,代碼簡單易懂,非常不錯,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python實現(xiàn)隨機從圖像中獲取多個patch

    Python實現(xiàn)隨機從圖像中獲取多個patch

    經(jīng)常有一些圖像任務(wù)需要從一張大圖中截取固定大小的patch來進行訓(xùn)練。本文就來和大家聊聊如何用Python實現(xiàn)隨機從圖像中獲取多個patch,感興趣的可以了解一下
    2022-08-08
  • 用python對excel查重

    用python對excel查重

    這篇文章主要介紹了用python對excel查重的方法,幫助大家更好的利用python處理excel表格,感興趣的朋友可以了解下
    2020-12-12
  • 一篇文章帶你了解python集合基礎(chǔ)

    一篇文章帶你了解python集合基礎(chǔ)

    今天小編就為大家分享一篇關(guān)于Python中的集合介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-08-08
  • Python機器學(xué)習(xí)之實現(xiàn)模型持久化與加載

    Python機器學(xué)習(xí)之實現(xiàn)模型持久化與加載

    在實際的機器學(xué)習(xí)項目中,我們通常需要將訓(xùn)練好的模型保存到磁盤,本文我們會介紹如何在Python中使用pickle和joblib庫將訓(xùn)練好的模型持久化到磁盤,需要的可以參考一下
    2023-05-05
  • Python 比較文本相似性的方法(difflib,Levenshtein)

    Python 比較文本相似性的方法(difflib,Levenshtein)

    今天小編就為大家分享一篇Python 比較文本相似性的方法(difflib,Levenshtein),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python中元組解包的實現(xiàn)示例

    python中元組解包的實現(xiàn)示例

    元組解包是Python中一種強大且常用的特性,它允許你將元組中的元素自動分配給多個變量,下面主要介紹了元組解包的使用,感興趣的可以了解一下
    2025-08-08
  • 詳解如何在Python中有效調(diào)用JavaScript

    詳解如何在Python中有效調(diào)用JavaScript

    JavaScript和Python都是極為流行的編程語言,并在前端開發(fā)和后端開發(fā)領(lǐng)域扮演著重要的角色,那么Python如何更好的契合JavaScript呢,下面就跟隨小編一起學(xué)習(xí)一下吧
    2024-02-02
  • 用python代碼做configure文件

    用python代碼做configure文件

    在lua中,我一直用lua作為config文件,或者承載數(shù)據(jù)的文件 - 好處是lua本身就很好閱讀,然后無需額外寫解析的代碼,還支持在configure文件中讀環(huán)境變量,條件判斷等,方便又強大!
    2014-07-07

最新評論

大同县| 会昌县| 通化市| 聂拉木县| 繁峙县| 晋中市| 武鸣县| 屏边| 五莲县| 攀枝花市| 常宁市| 盐山县| 巴南区| 霍城县| 吴堡县| 长治市| 赫章县| 县级市| 双江| 玉门市| 荔波县| 灵宝市| 井陉县| 成都市| 安国市| 湟源县| 永善县| 绥芬河市| 绥宁县| 上林县| 沐川县| 遵义县| 南江县| 伊宁市| 黑龙江省| 东兰县| 正镶白旗| 茂名市| 丁青县| 隆化县| 黔西县|