欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

常用的RegEx函數(shù)

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

以下為部分示例:

對(duì)于split函數(shù),我們?cè)趯?duì)字符串進(jìn)行分割的時(shí)候可以直接調(diào)用split方法,再次不再進(jìn)行

>>> 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'>#此處輸出的時(shí)一個(gè)match對(duì)象
 
>>> mp=re.search(pattern='\d+\W\d+',string=a)#查找電話號(hào)碼
>>> print(mp.group())#使用group方法獲取于指定模式相匹配的字符串
86-666666
>>> print(mp.start())#獲取第一個(gè)匹配字符串的索引
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傳入的字符串替代匹配到的第一個(gè)字符串
>>> print(m_sub)
xiaohong:wo jiao xiaoming,wo de dianhua shi +86-6666
 
#編譯模式
>>> p=re.compile('\d{6}')#預(yù)先設(shè)定好匹配的模式
>>> m1=p.search(a)#對(duì)預(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á)式

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

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

從粘貼板的文字中提取郵箱和手機(jī)號(hào)碼

#! /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á)式對(duì)字符串的查找匹配的文章就介紹到這了,更多相關(guān)python字符串查找匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)選取或刪除指定列包含指定內(nèi)容的行

    python實(shí)現(xiàn)選取或刪除指定列包含指定內(nèi)容的行

    這篇文章主要介紹了python實(shí)現(xiàn)選取或刪除指定列包含指定內(nèi)容的行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • python編程嵌套函數(shù)實(shí)例代碼

    python編程嵌套函數(shù)實(shí)例代碼

    這篇文章主要介紹了python編程嵌套函數(shù)實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python區(qū)塊鏈交易類教程

    Python區(qū)塊鏈交易類教程

    這篇文章主要為大家介紹了Python區(qū)塊鏈交易類的示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 關(guān)于python?DataFrame的合并方法總結(jié)

    關(guān)于python?DataFrame的合并方法總結(jié)

    這篇文章主要介紹了關(guān)于python?DataFrame的合并方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python中matplotlib條件背景顏色的實(shí)現(xiàn)

    python中matplotlib條件背景顏色的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于python中matplotlib條件背景顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Pytorch 如何實(shí)現(xiàn)常用正則化

    Pytorch 如何實(shí)現(xiàn)常用正則化

    這篇文章主要介紹了Pytorch 實(shí)現(xiàn)常用正則化的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python面向?qū)ο髮?shí)現(xiàn)數(shù)據(jù)分析的實(shí)例詳解

    Python面向?qū)ο髮?shí)現(xiàn)數(shù)據(jù)分析的實(shí)例詳解

    這篇文章主要通過幾個(gè)實(shí)例為大家詳細(xì)介紹了Python面向?qū)ο髮?shí)現(xiàn)數(shù)據(jù)分析的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2023-01-01
  • 零基礎(chǔ)寫python爬蟲之抓取百度貼吧代碼分享

    零基礎(chǔ)寫python爬蟲之抓取百度貼吧代碼分享

    前面幾篇都是以介紹基礎(chǔ)知識(shí)為主,各位童鞋估計(jì)都在犯嘀咕了,你到底寫不寫爬蟲啊??額,好吧,本文就給大家寫一個(gè)簡(jiǎn)單的百度貼吧的python爬蟲代碼。
    2014-11-11
  • Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

    Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

    大家好,今天這篇文章關(guān)于Python性能調(diào)優(yōu)的10個(gè)小技巧,每天花5-10分鐘閱讀我的文章,對(duì)你技術(shù)提升一定會(huì)有幫助。喜歡記得收藏以防迷路
    2021-11-11
  • 基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識(shí)別

    基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識(shí)別

    這篇文章主要為大家詳細(xì)介紹了基于python3+OpenCV實(shí)現(xiàn)人臉和眼睛識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論