認識爬蟲 —— 正則表達式提取

本質是對字符串的處理,正則表達式描述的是一種字符串匹配的模式。簡而言之,用具備一定特征意義的表達式對字符串進行檢查,將符合條件的子字符串提取出來。

導入模塊

import re

一、單字符匹配

match(表達式,匹配對象):匹配某個字符串

import re
text = 'python'
result = re.match('py',text)
print(result.group())

>>> py

1.從起始位置進行匹配

2.只能匹配某個,并且返回的結果是object => 使用group()方法進行打印

3.匹配不到,不會報錯,返回None

.?:匹配任意的某個字符

import re
text = '1python'
result = re.match('.',text)
print(result.group())

>>> 1

1.無法匹配換行符

2.從起始位置進行匹配

\d:匹配任意的某個數字

從起始位置進行匹配

import re
text = '1python'
result = re.match('\\d',text)
print(result.group())

import re
text = '1python'
result = re.match(r'\d',text)
print(result.group())

>>> 1

\D:除數字外均可匹配

從起始位置進行匹配

import re
text = '_python'
result = re.match(r'\D',text)
print(result.group())

>>> _

\s:匹配空白字符

1.從起始位置進行匹配

2.\n \t \r 空格都表示空白字符

import re
text = '\npython'
result = re.match(r'\s',text)
print(result.group())

\w:匹配小寫的a-z、大寫的A-Z,數字和下劃線

import re
text = '_python'
result = re.match(r'\w',text)
print(result.group())

>>> _

\W:匹配除小寫\w之外的所有字符

eg. —

[]:表示組合方式,只要在中括號內的內容均可匹配(取或)

1.從起始位置進行匹配

2.[] 內多個匹配內容時,取"或",只要匹配對象中含有其中一個內容就匹配

import re
text = '?-python'
result = re.match('[-?]',text)
print(result.group())

>>> ?

二、多字符匹配

*:匹配零個或者多個字符

import re
text = '151-1234-5678'
result = re.match(r'[\d]*',text)
print(result.group())

>>> 151

+:匹配一個或者多個(至少有一個)

import re
text = 'a151-1234-5678'
result = re.match(r'[a\d]+',text)
print(result.group())

>>> a151 (匹配到不滿足條件為止)

?:要么匹配0個,要么匹配1個

import re
text = '-a151-1234-5678'
result = re.match(r'[-a\d]?',text)
print(result.group())

>>> - (最多讓你匹配一個)

{m}:匹配指定個數m

import re
text = '-151-1234-5678'
result = re.match(r'[-\d]{2}',text)
print(result.group())

>>> -1

{m,n}:匹配m到n個(默認匹配最多次)

import re
text = '-151-1234-5678'
result = re.match(r'[-\d]{2,4}',text)
print(result.group())

>>> -151

三、匹配規則的替代方案

1. \d ->> [0-9]:匹配所有的數字

2. \D ->> [^0-9]:匹配所有的非數字

3. \w ->> [0-9a-zA-Z_]:匹配所有的數字、字母和下劃線

4. \W ->> [^0-9a-zA-Z_]:匹配所有的非數字、字母和下劃線

5. [\d\D]、[\w\W]:匹配所有的字符

四、特殊匹配

[.]+:[.],表示的是僅表示匹配點(.),配合+,即匹配. 一次或多次

五、特殊匹配進階

從頭匹配

re.match:必須從字符串開頭進行匹配,一旦起始位置出錯,便報錯

全局遍歷

re.search:從左到右進行字符串的遍歷,找到就返回,后續再次出現,但也不再返回結果

^:中括號內表示取反;中括號外表示以指定的字符開始

$:表示以...為結尾

| :匹配多個表達式或者字符串

六、貪婪模式與非貪婪模式

貪婪模式:正則表達式會盡可能多地匹配字符【默認就是貪婪模式】

非貪婪模式:正則表達式會盡可能少地匹配字符?【添加?】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918430.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單鏈表專題---暴力算法美學(1)(有視頻演示)

1.1 移除鏈表元素 題目要求:給你一個鏈表的頭節點head 和一個整數val,請你刪除鏈表中所有滿足Node.val val 的節點,并返回新的頭節點。 思路一:遍歷鏈表,遇到val就刪除,pcur指向val的下一個節點,最后只剩…

機器學習-決策樹(DecisionTree)

0 回歸決策樹展示 import pandas as pd import numpy as np from sklearn.tree import DecisionTreeRegressor from sklearn.metrics import root_mean_squared_error, r2_score from sklearn.model_selection import GridSearchCV,KFold from sklearn.model_selection import…

【Java Web】JDBC 連接 MySQL 實現數據庫 CRUD(增刪改查)詳解

在 Java Web 開發中,與數據庫交互是不可避免的,而 JDBC(Java Database Connectivity) 是 Java 官方提供的標準數據庫連接接口,幾乎所有 Java 項目中都用過它。 本文通過一個完整示例,帶你從零實現 增&#…

HTTP 請求返回狀態碼和具體含義?200、400、403、404、502、503、504等

HTTP 狀態碼是服務器對客戶端請求的響應狀態標識,分為五大類(以第一位數字區分),常用狀態碼如下: 1. 信息類(1xx):請求已接收,繼續處理 100 Continue:服務器已…

13-netty基礎-手寫rpc-消費方生成代理-05

netty系列文章: 01-netty基礎-socket02-netty基礎-java四種IO模型03-netty基礎-多路復用select、poll、epoll04-netty基礎-Reactor三種模型05-netty基礎-ByteBuf數據結構06-netty基礎-編碼解碼07-netty基礎-自定義編解碼器08-netty基礎-自定義序列化和反序列化09-n…

ThreadLocal有哪些內存泄露問題,如何避免?

每個Thread都有一個ThreadLocal.ThreadLocalMap的map,該map的key為ThreadLocal實例,它為一個弱引 用,我們知道弱引用有利于GC回收。當ThreadLocal的key null時,GC就會回收這部分空間,但是value卻不一 定能夠被回收&am…

從0到1學LangChain之Agent代理:解鎖大模型應用新姿勢

從0到1學LangChain之Agent代理&#xff1a;解鎖大模型應用新姿勢 本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型開發 學習視頻/籽料/面試題 都在這>>Github<< 什么是 LangChain Agent 代理 如果把大模型比作一個超級大腦&#xff0c;那么…

Spring Boot 2.6.0+ 循環依賴問題及解決方案

Spring Boot 2.6.0 循環依賴問題及解決方案 目錄 背景解決方案 1. 配置文件開啟循環依賴&#xff08;侵入性最低&#xff0c;臨時方案&#xff09;2. Lazy 延遲注入&#xff08;侵入性低&#xff0c;推薦優先嘗試&#xff09;3. 手動從容器獲取&#xff08;ApplicationContex…

本地代碼上傳Github步驟

1.注冊Github賬號 2.下載git客戶端 下載、安裝步驟可以參考網站&#xff1a;(6 封私信 / 10 條消息) 手把手教你用git上傳項目到GitHub&#xff08;圖文并茂&#xff0c;這一篇就夠了&#xff09;&#xff0c;相信你一定能成功&#xff01;&#xff01; - 知乎 3.在Github上…

5G NR 非地面網絡 (NTN) 5G、太空和統一網絡

非地面網絡 5G 和太空&#xff1a;對 NTN 測試與測量的影響NTN 基站測試與測量NTN 用戶設備的測試設備R&SSMW200A 矢量信號發生器R&SSMBV100B 矢量信號發生器總結5G 和太空&#xff1a;對 NTN 測試與測量的影響 5G 非地面網絡 (NTN) 是無線通信向全球性星基和機載通信…

少兒編程比賽(如藍橋杯、創意編程大賽等)的題目類型、知識點及難度總結

以下是針對主流少兒編程比賽&#xff08;如藍橋杯、創意編程大賽等&#xff09;的題目類型、知識點及難度總結&#xff0c;結合了Scratch和C等語言的真題分析&#xff0c;幫助備賽或教學參考&#xff1a; 一、基礎操作與交互題&#xff08;適合6~10歲&#xff09; 考察圖形化編…

SIFThinker: Spatially-Aware Image Focus for Visual Reasoning

SIFThinker: Spatially-Aware Image Focus for Visual Reasoning Authors: Zhangquan Chen, Ruihui Zhao, Chuwei Luo, Mingze Sun, Xinlei Yu, Yangyang Kang, Ruqi Huang 相關工作總結 視覺思維鏈推理 最近的研究表明&#xff0c;通過上下文學習逐步推理可以顯著提升大型…

學習嵌入式第二十五天

IO 1.概念 IO指input/outputLinux中一切皆文件IO的操作對象是文件 2.文件一段數據的集合文件通常存放在外存中&#xff0c;掉電后數據不丟失分類b(block&#xff0c;塊設備文件) 按塊掃描信息的文件。通常存儲類型的設備為塊設備文件。文件IOc(character&#xff0c;字符設備文…

本地部署接入 whisper + ollama qwen3:14b 總結字幕

1. 實現功能 M4-1 接入 whisper ollama qwen3:14b 總結字幕 自動下載視頻元數據如果有字幕&#xff0c;只下載字幕使用 ollama 的 qwen3:14b 對字幕內容進行總結 2.運行效果 &#x1f50d; 正在提取視頻元數據… &#x1f4dd; 正在下載所有可用字幕… [youtube] Extracting U…

【13-向量化-高效計算】

研究者能夠擴展神經網絡并構建非常大型網絡的原因之一&#xff0c;就是神經網絡可以被向量化&#xff0c;vectorized&#xff1b;可以非常高效地用矩陣地乘法實現。 事實上&#xff0c;并行計算硬件&#xff0c;例如GPU&#xff0c;一些CPU的功能&#xff0c;非常擅長進行非常大…

論文中PDF的公式如何提取-公式提取

Mathcheap - An AI-powered, free alternative to Mathpix Snip. 從PDF中截圖公式&#xff0c;之后 ctrl V 轉換成功 &#xff0c;提取成功 復制到word中&#xff0c;是這樣的 這顯然不是我們需要的。 可以使用Axmath 復制進去Axmath 就能正常顯示公式。 之后再插入word…

用 Flink SQL 和 Paimon 打造實時數倉:深度解析與實踐指南

1. 實時數倉的魅力&#xff1a;從離線到分鐘級的飛躍實時數倉&#xff0c;聽起來是不是有點高大上&#xff1f;其實它沒那么神秘&#xff0c;但確實能讓你的數據處理能力像坐上火箭一樣飆升&#xff01;傳統的離線數倉&#xff0c;像 Hadoop 生態的 Hive&#xff0c;動輒小時級…

【已解決】報錯:WARNING: pip is configured with locations that require TLS/SSL

一、問題背景二、問題分析1. SSL模塊缺失的本質2. Anaconda環境特點三、問題表現四、解決方案詳解1. 完整配置環境變量2. 添加環境變量的步驟3. 測試驗證五、實戰示例六、附加建議七、總結八、參考鏈接一、問題背景 在Windows 10系統中使用Python的包管理工具pip時&#xff0c…

Java項目基本流程(三)

一、頁面初始化階段&#xff08;加載即執行&#xff09;加載欄目列表&#xff08;同步請求&#xff09;發送同步 AJAX 請求到SearchChannel接口&#xff0c;獲取所有欄目數據。清空下拉框&#xff08;.channelid&#xff09;后&#xff0c;先添加 “全部” 選項&#xff0c;再循…

鷓鴣云光伏仿真:項目前期決策的“數據明燈”

曾有一處光伏項目&#xff0c;在精心籌備數月后終于建成&#xff0c;卻在運行初期即因未充分評估山體遮擋影響&#xff0c;導致實際發電量較預期大幅降低近一成。前期決策中的微小疏漏&#xff0c;往往成為項目經濟性與可行性的致命傷。而鷓鴣云光伏仿真軟件正是一盞照亮前路的…