正則只能出現特定字符_python正則表達式的簡單使用總結

12fa86d7ca630768a85dc89cc33307b2.png

原文作者:小哲,雷鋒網

在編程中,經常會涉及到字符串的操作,一個常用的策略就是利用split函數,然后對于特定的字符串進行匹配,但是這種方法格式復雜,可復用性較差。

正則表達式是處理字符串匹配一個必不可少的方法,定義一個語義規則,來進行特定的字符字符串的規則。

正則表達式速查表

1 元字符,用特殊符號表示一類元素

語法說明語法示例匹配字符
.匹配除換行符以外的任意字符(這是一個小紅點兒)a.cabc
\w匹配字母或數字或下劃線 (可以記成 word )a\wca2c
\b匹配一個單詞的邊界foo\b匹配foo,foo. 但不匹配foobar
\B匹配空字符串,但 不 能在詞的開頭或者結尾py\B匹配python py2 py3, 但不匹配py.
^匹配字符串的開始^abcabc
\W匹配非字母數字下劃線a\Wba b
\d匹配數字 (可記成 digit )a\dca2c
\D匹配非數字a\Dcabc
\s匹配任意的空白符 (可以記成 space )a\sba b
\S匹配非空白符a\Sbacb
a|b匹配字符a或字符b。(長的寫前面,短的寫后面)abc|defabc 或def
()匹配括號內的表達式,也表示一個組(abc)abc
[...]匹配字符組中的字符a[bcd]eabe 或ace或ade
[^...]匹配除了字符組中字符的所有字符a[bcd]ease

2 字符組 [],限制范圍,某個位置只能出現這個范圍內的某個元素。

語法說明語法示例匹配字符
[0123456789]只能匹配0-9數字,可寫成[0-9][0123456789]0或1或2...
[a-z]只能匹配小寫字母[a-z]d
[A-Z]只能匹配大寫字母[A-Z]D
[0-9a-fA-F]可以匹配16進制的某個數[0-9a-fA-F]D

3 量詞,表示數量,約束前面元字符出現的次數。

語法說明語法示例匹配字符
*重復前一個字符零次或多次abc*ab 或abccc
+重復前一個字符一次或多次abc+abc 或abccc
?重復前一個字符零次或一次abc?ab 或abc
{n}重復前一個字符n次abc{3}abccc
{n,}重復前一個字符至少n次abc{3,}abccccc
{n,m}重復前一個字符n到m次abc{1,5}abc或abcc或abccccc

re模塊包函數

# 導入包import re
################re.compile() 編譯# 將正則表達式編譯成一個正則表表達式對象。# 如果一個正則表達式在程序中只用一次,就沒必要編譯了。# 如果同一個正則表達式要被多次使用時,就需要對表達式進行編譯,以便后續使用。
例如:匹配www.baidu.com
pattern = r'w*\.[a-z]{5}\.[a-z]*'
prog = re.compile(pattern)
string = 'www.baidu.com'
result = prog.match(string)# 如果匹配成功返回match對象,不成功返回None
###################re.findall()  返回列表# 一、re.findall(正則表達式,待匹配的字符串,flags=0)# 二、findall默認只顯示分組中的,分組有優先級。
pattern = r'w{3}\.(baidu|oldboy)\.com'
prog = re.compile(pattern)
ret = re.findall(prog, 'www.baidu.com')
print(ret)# 結果:['baidu']# 三、加上 ?: 取消分組的優先# ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.baidu.com')# print(ret)# 結果:['www.baidu.com']
###################re.match()#從頭匹配
re.match(pattern, string, flags=0)#如果 string 開始的0或者多個字符匹配到了正則表達式樣式,就返回一個相應的 匹配對象 。如果沒有匹配,就返回 None ;#需要group(),才能返回值
###################re.search()#掃描整個 字符串 找到匹配樣式的第一個位置,并返回一個相應的 匹配對象。如果沒有匹配,就返回一個 None ;注#同樣需要group(),才能的返回值
####################re.sub()、re.subn()# re.sub()
re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE) # 【表達式表示替換內容,要替換的新元素,替換對象,替換次數】# 結果為:'Baked Beans & Spam'# re.subn()
re.subn(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE) # 【返回元組,前面是替換完的結果,后面是替換的次數】
結果是('Baked Beans & Spam', 1)

b7cf2a127d59d5f738fb312df96abdea.png

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

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

相關文章

MySQL配置日志服務器_mysql配置數據庫日志

mysql配置數據庫日志云服務器(Elastic Compute Service,簡稱ECS)是阿里云提供的性能卓越、穩定可靠、彈性擴展的IaaS(Infrastructure as a Service)級別云計算服務。云服務器ECS免去了您采購IT硬件的前期準備,讓您像使用水、電、天然氣等公共資源一樣便捷…

python外星人入侵不顯示子彈_【Python】python外星人入侵,武裝飛船,代碼寫好后,不顯示子彈...

按照書上寫的武裝飛船,寫到能夠左右移動了,但到了射擊(裝子彈)時候,按照書上的代碼照搬了,運行時沒顯示代碼有問題,但就是按了空格鍵,不見有子彈,其他都正常。代碼:alien_invasion.p…

python常見的異常類有哪些_Python常見異常類型

標簽:常見 nic 警告 werror pytho 無效 本地變量 計算 pointBaseException     所有異常的基類SystemExit             解釋器請求退出KeyboardInterrupt          用戶中斷執行(通常是輸入^C)Exc…

mysql dos 下切換連接_如何在dos下連接進入mysql對數據庫進行操作

一、:windowsR 進入命令命令提示符輸入 net start mysql若出現系統錯誤,要將命令提示符以管理員身份運行若出現不是內部指令,進入下面環境變量設置界面,配置path路徑1.進入系統查看界面,點擊高級系統設置2&#xff0c…

mysql二級緩存redis_SpringBoot+Mybatis+redis(二級緩存)搭建

剛剛開始接觸Spring Boot,因為極簡單的配置開發,搭建一個通用的Spring BootMybaitisredis的開發框架。一、用maven構建項目,pom.xml文件如下:org.springframework.bootspring-boot-starter-parent1.5.1.RELEASEorg.springframewor…

mysql自定義兩個條件排序_使用MySQL中的兩個不同列進行自定義排序?

為此,將ORDER BY子句與CASE語句一起使用。讓我們首先創建一個表-mysql> create table DemoTable1610-> (-> Marks int,-> Name varchar(20)-> ) ;使用插入命令在表中插入一些記錄-mysql> insert into DemoTable1610 values(85,John);mysql> in…

java獲取文件大小_Java中獲取文件大小的詳解及實例代碼

Java 獲取文件大小今天寫代碼時需要實現獲取文件大小的功能,目前有兩種實現方法,一種是使用File的length()方法;另外一種是使用FileInputStream的available()方法,當InputStream未進行read操作時,available()的大小應該…

java訪問權限friendly_Java的訪問權限

一.Java訪問權限飾詞(access specifiers)Java有public、protect、friendly、private四種訪問權限,并且這四訪問權限的訪問范圍越來越小。1. friendly1) 果一個class內的數據成員或方法沒有任何權限飾詞,那么它的缺省訪問權限就是f…

java 0 255_java – 什么(float)(par4 16255)/ 255.0F;意思?

帶alpha通道的RGB(通常稱為RGBA或aRGB)是四個字節打包成一個整數.AAAAAAAARRRRRRRRBBBBBBBBGGGGGGGG // the original par4, each char represents one bit.// where ARBG stands for alpha, red, blue and green bit.shift和運算符用于檢索每個字節.例如,par4>> 16&…

java ie下載文件名亂碼問題_php中強制下載文件的代碼(解決了IE下中文文件名亂碼問題)...

中間遇到一個問題是提交的中文文件名直接放到header里在IE下會變成亂碼,解決方法是將文件名先urlencode一下再放入header,如下。$file_name urlencode($_REQUEST[filename]);header("Pragma: public"); header("Expires: 0");heade…

java如何獲得當前路徑_在java中如何得到當前路徑

歸納一些網上取java路徑的方法:注明:如果從ANT啟動程序,this.getClass().getResource("")取出來的比較怪,直接用JAVA命令行調試就可成功。得到classpath和當前類的絕對路徑的一些方法獲得CLASSPATH之外路徑的方法&#…

java繼承總結_JAVA筆記:Java中的繼承總結

繼承:在Java中使用extends關鍵字來實現類的繼承 ,extends意思就是派生,所以子類也叫派生類,繼承的主要目的是擴展類的內容操作格式: class A{}; class B extends A{};子類B可以繼承父類A中的公用方法,也可…

java正則表達式 類_java正則表達式相關類的使用

import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestZhengZe {public static void main(String[] args) {//匹配數字Pattern mac Pattern.compile("-?(0|([1-9][0-9]*))(\\.[0-9])?");System.out.println(mac.matcher("101.00…

Java轉置_Java實現單鏈表的逆轉置

單鏈表逆轉置的遞歸與非遞歸方式package link.reverse;// 定義一個單鏈表class Node {//變量private int record;//指向下一個對象private Node nextNode;public Node(int record) {this.record record;}public int getRecord() {return record;}public void setRecord(int re…

單利 java_Java設計模式-單利模式

單例模式作為對象的創建模式,單例模式確保其某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類稱為單例類。單例模式有以下特點:1、單例類只能有一個實例2、單例類必須自己創建自己的唯一實例3、單例類必須給其…

esp8266接7735_基于8266的ESPEASY固件接入HASS的教程(可無腦接入各類傳感...

首先國際慣例,先放上成果:QQ圖片20170629160143.png (172.48 KB, 下載次數: 3)2017-6-29 16:03 上傳如上圖所示,樓主把顆粒物傳感器和二氧化碳傳感器加入到了HASS里,當然,論壇之前也有諸位大神提供過類似固件和方法來實現這一目標…

java定義private_java9開始——接口中可以定義private私有方法

在傳統的Java編程中,被廣為人知的一個知識點是:java Interface接口中不能定義private私有方法。只允許我們定義public訪問權限的方法、抽象方法或靜態方法。但是從Java 9 開始,Interface 接口中允許定義私有方法和私有靜態方法。下面我們就來…

java poi生成excel文件_java poi 導出Excel文件

1,導包 poi-3.9-XXX.JAR2, 創建一個實體對象public class Student implements Serializable {/****/private static final long serialVersionUID 1L;private int id;private String name;private int age;private Date borth;public Student(int id, String name…

java中捕獲異常的作用_在Java中捕獲通用異常?

您可以傳遞Class對象并以編程方式檢查。public static void checkForException(String message,Class exceptionType, ExpectedExceptionBlock block) {try {block.exceptionThrowingCode();} catch (Exception ex) {if ( exceptionType.isInstance(ex) ) {return;} else {thro…

java如何循環調用方法_Java:調用方法的“中斷”循環?

我的小程序有點問題。我有一個JOptionPane要求一個數字,如果該數字小于10,則一個循環會一直持續下去,并永遠做下去,繼續詢問數字。 在該循環內,我調用一個方法,將int作為參數。 在該方法中,我需…