国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作

這篇具有很好參考價(jià)值的文章主要介紹了python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、數(shù)據(jù)庫(kù)編程

  • 可以使用python腳本對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,比如獲取數(shù)據(jù)庫(kù)數(shù)據(jù)保存到文件中,這個(gè)功能可以通過(guò)數(shù)據(jù)庫(kù)相關(guān)模塊進(jìn)行實(shí)現(xiàn)。
  • 在python2.x版本中使用的是MySQLdb模塊,python3.x版本中使用的是pymysql模塊,兩者用法幾乎相同。
  • pymysql是第三方模塊,需要單獨(dú)安裝,首選通過(guò)pip安裝PyMySQL。
  • 對(duì)不同類型的數(shù)據(jù)庫(kù)操作,需要安裝導(dǎo)入的模塊也不同。

1.1 connect()函數(shù)

  • connect()函數(shù):用來(lái)建立和數(shù)據(jù)庫(kù)的連接。
connect()函數(shù)常用參數(shù) 描述
host 數(shù)據(jù)庫(kù)主機(jī)地址
user 數(shù)據(jù)庫(kù)賬戶
passwd 賬戶密碼
db 使用的數(shù)據(jù)庫(kù)
port 數(shù)據(jù)庫(kù)主機(jī)端口,默認(rèn)3306
connect_timeout 連接超時(shí)時(shí)間,默認(rèn)10,單位秒
charset 使用的字符集
cursorclass 自定義游標(biāo)使用的類。上面示例用的是字典類,以字典形式返回結(jié)果,默認(rèn)是元組形式。

1.安裝pymysql模塊。

pip3 install pymysql

2.準(zhǔn)備好數(shù)據(jù)庫(kù)信息。

##安裝數(shù)據(jù)庫(kù)實(shí)例。
docker run -d --name qingjun -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30

##創(chuàng)建數(shù)據(jù)庫(kù)和表,用來(lái)測(cè)試。
create database test;
use test;
create table user(id int primary key not null auto_increment,username varchar(50) not null,password varchar(50) not null);

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
3.連接數(shù)據(jù)庫(kù),開(kāi)始操作數(shù)據(jù)庫(kù)。

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

import pymysql

##數(shù)據(jù)庫(kù)信息。
conn = pymysql.connect(host='192.168.161.132',
                        port=3306,
                        user='root',
                        password='123456',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()    ##建立數(shù)據(jù)庫(kù)連接。

# 創(chuàng)建一條記錄.
sql = "insert into user(username, password) values('qingjun', '123456')"
cursor.execute(sql)    ##執(zhí)行sql語(yǔ)句。
conn.commit()          ##寫(xiě)入到數(shù)據(jù)庫(kù)。

4.查看數(shù)據(jù)庫(kù)數(shù)據(jù)。
python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

1.2 命令參數(shù)

連接對(duì)象常用方法 描述
commit() 提交事務(wù)。對(duì)支持事務(wù)的數(shù)據(jù)庫(kù)和表,如果提交修改操作,不適用這個(gè)方法,則不會(huì)寫(xiě)到數(shù)據(jù)庫(kù)中
rollback() 事務(wù)回滾。對(duì)支持事務(wù)的數(shù)據(jù)庫(kù)和表,如果執(zhí)行此方法,則回滾當(dāng)前事務(wù)。在沒(méi)有commit()前提下。
cursor([cursorclass]) 創(chuàng)建一個(gè)游標(biāo)對(duì)象。所有的sql語(yǔ)句的執(zhí)行都要在游標(biāo)對(duì)象下進(jìn)行。MySQL本身不支持游標(biāo),MySQLdb模塊對(duì)其游標(biāo)進(jìn)行了仿真。
游標(biāo)對(duì)象常用方法 描述
close() 關(guān)閉游標(biāo)
execute(sql) 執(zhí)行sql語(yǔ)句
executemany(sql) 執(zhí)行多條sql語(yǔ)句
fetchone() 從運(yùn)行結(jié)果中取第一條記錄,返回字典
fetchmany(n) 從運(yùn)行結(jié)果中取n條記錄,返回列表
fetchall() 從運(yùn)行結(jié)果中取所有記錄,返回列表

1.3 常用語(yǔ)句

1.插入數(shù)據(jù)。

import pymysql
conn = pymysql.connect(host='192.168.161.132',
                        port=3306,
                        user='root',
                        password='123456',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()

##插入一條數(shù)據(jù)。
sql = "insert into user(username, password) values('wuhan', '88')"
cursor.execute(sql)
conn.commit()
conn.close()    ##關(guān)閉游標(biāo)



##插入多條數(shù)據(jù)。
sql = "insert into user(username, password) values(%s,%s)"
args = [('beijing',222),('shenzheng',9990)]
cursor.executemany(sql,args)
conn.commit()
conn.close()    ##關(guān)閉游標(biāo)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.查詢數(shù)據(jù)。

import pymysql
conn = pymysql.connect(host='192.168.161.132',
                        port=3306,
                        user='root',
                        password='123456',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()


##查詢數(shù)據(jù)。
sql = "select * from user"
cursor.execute(sql)
print(cursor.fetchone())   ##獲取第一條記錄。
print(cursor.fetchmany(1))   ##從運(yùn)行結(jié)果中,獲取1條記錄。
print(cursor.fetchall())   ##獲取所有記錄。
conn.close()    ##關(guān)閉游標(biāo)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

3.修改數(shù)據(jù)。

import pymysql
conn = pymysql.connect(host='192.168.161.132',
                        port=3306,
                        user='root',
                        password='123456',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()

##修改數(shù)據(jù)。
sql = "update user set password='100' where username='wuhan'"
cursor.execute(sql)
conn.commit()
conn.close()    ##關(guān)閉游標(biāo)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
4.刪除數(shù)據(jù)。

import pymysql
conn = pymysql.connect(host='192.168.161.132',
                        port=3306,
                        user='root',
                        password='123456',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()


##刪除數(shù)據(jù)。
sql = "delete from user where username='qingjun'"
cursor.execute(sql)
conn.commit()
conn.close()    ##關(guān)閉游標(biāo)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

5.遍歷查詢結(jié)果。

try:
    with conn.cursor() as cursor:
        sql = "select id,username,password from user"
        cursor.execute(sql)
        result = cursor.fetchall()
    for dict in result:
        print(f"ID: {dict['id']}, 用戶名: {dict['username']}, 密碼: {dict['password']}")
finally:    ##不管try是否執(zhí)行成功,finally都執(zhí)行。
    conn.close()

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

二、正則表達(dá)式

  • 正則表達(dá)式是對(duì)字符串操作的一種邏輯方式,就是用實(shí)現(xiàn)定義好的一些特定字符及這些特定字符的組合,組成一個(gè)規(guī)則字符串,這個(gè)規(guī)則字符串就是表達(dá)對(duì)字符串的邏輯,給定一個(gè)正則表達(dá)式和另一個(gè)字符串,通過(guò)正則表達(dá)式從字符串我們想要的部分。
  • Python正則表達(dá)式主要由re標(biāo)準(zhǔn)庫(kù)提供,擁有了基本所有的表達(dá)式。

2.1 匹配方式

方法 描述
re.compile(pattern, flags=0) 把正則表達(dá)式編譯成一個(gè)對(duì)象。
pattern 指的是正則表達(dá)式,flags是標(biāo)志位的修飾符,用于控制表達(dá)式匹配模式
re.match(pattern, string, flags=0) 匹配字符串開(kāi)始,如果不匹配返回None
re.search(pattern, string, flags=0) 掃描字符串尋找匹配,如果符合返回一個(gè)匹配對(duì)象并終止匹配,否則返回None
re.split(pattern, string, maxsplit=0, flags=0) 以匹配模式作為分隔符,切分字符串為列表
re.findall(pattern, string, flags=0) 以列表形式返回所有匹配的字符串
re.finditer(pattern, string, flags=0) 以迭代器形式返回所有匹配的字符串
re.sub(pattern, repl, string, count=0, flags=0) 字符串替換,repl替換匹配的字符串,repl可以是一個(gè)函數(shù)

1.老方法匹配字符串。優(yōu)點(diǎn)是,方便再次使用。

a = 'this is jdasi1!#@sjkdjalk'

import re
pattern = re.compile("this")  ##預(yù)定義正則表達(dá)式。
baimu = pattern.match(a)   ##使用預(yù)定義的正則表達(dá)式匹配字符串,
print(baimu)
print(baimu.group())   ##過(guò)濾出匹配的字符串。

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
2.常用方式匹配,優(yōu)點(diǎn)是,更直觀。從第一個(gè)字符串開(kāi)始匹配。

a = 'this is jdasi1!#@sjkdjalk'

import re
qingjun = re.match("this",a)
print(qingjun.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
3.掃描匹配。

import re
s = "我今年23335歲"
result2 = re.search("\d+", s)
print(result2.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
4.以匹配模式作為分隔符,切分字符串為列表。

import re
s = "我今年23335歲"
result2 = re.split("\d+", s)   ##\d+作為分隔符。
print(result2)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
5.以列表形式返回所有匹配的字符串。

import re
s = "我今年23335歲,張三今年22歲"
result2 = re.findall("\d+", s)   ##匹配字符串中所有的數(shù)字,并返回一個(gè)列表,
print(result2)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
6.替換匹配。

import re
s = "我今年23335歲,張三今年22歲"
result2 = re.sub("\d+","50",s)   ##將字符串中的所有數(shù)字替換成50
print(result2)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.2 字符匹配

字符匹配 描述
. 任意單個(gè)字符(除了\n)
[ ] 匹配中括號(hào)中的任意1個(gè)字符。并且特殊字符寫(xiě)在[ ]會(huì)被當(dāng)成普通字符來(lái)匹配
[ .-.] 匹配中括號(hào)中范圍內(nèi)的任意1個(gè)字符,例如[a-z],[0-9]
[^] 匹配 [^字符] 之外的任意一個(gè)字符
\d 匹配數(shù)字,等效[0-9]
\D 匹配非數(shù)字字符,等效[^0-9]
\s 匹配單個(gè)空白字符(空格、Tab鍵),等效[\t\n\r\f\v]
\S 匹配空白字符之外的所有字符,等效[^\t\n\r\f\v]
\w 匹配字母、數(shù)字、下劃線,等效[a-zA-Z0-9_]
\W 與\w相反,等效[^a-zA-Z0-9_]

1.匹配單個(gè)字符,使用"."

a = 'this is jdasi1!#@sjkdjalk'
import re

qingjun1 = re.match(".",a)
qingjun2 = re.match("..",a)
qingjun3 = re.match("...",a)
print(qingjun1.group())
print(qingjun2.group())
print(qingjun3.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
2.匹配[ ]中任意一個(gè)字符。

a = 'this is jdasi1!#@sjkdjalk'
import re

qingjun1 = re.match("[tZZx]",a)
qingjun2 = re.match("[tZZx][shj]",a)
qingjun3 = re.match("[tZZx][shj][iOk]",a)     ##第1個(gè)[]匹配字符串中第1個(gè)字符,第2個(gè)[]匹配字符串中第1個(gè)字符,以此類推。
qingjun4 = re.match("[^i]",a)       ##取反匹配,匹配除i之外的任意字符,所以能匹配到t。
qingjun5 = re.match("[a-z][a-k]",a)     ##匹配a~z中任意字符。
print(qingjun1.group())
print(qingjun2.group())
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

3.匹配數(shù)字,”\d“。

a = '99isl3'
import re

qingjun1 = re.match("[0-9]",a)
qingjun2 = re.match("[0-9][0-9]",a)
qingjun3 = re.match("[0-9][0-9][a-z]",a)
qingjun4 = re.match("\d\d",a)       ## \d等同于[0-9]
qingjun5 = re.match("\d\d[a-z]",a)
qingjun6 = re.match("\d\d\D",a)    ## \D等同于[^0-9]
print(qingjun1.group())
print(qingjun2.group())
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())
print(qingjun6.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
4.匹配單個(gè)空白字符,”\s“。

a = '99 isl3'
import re

qingjun3 = re.match("\d\d\s\D",a)
qingjun4 = re.match("[0-9][0-9]\s[a-z]",a)
print(qingjun3.group())
print(qingjun4.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
5.匹配空白字符之外的所有字符,”\S“。

a = '99 isl3'
import re

qingjun3 = re.match("\d\d\s\D",a)
qingjun4 = re.match("[0-9][0-9]\s[a-z]",a)
qingjun5 = re.match("\S\S\s[a-z]",a)
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
6.匹配字母、數(shù)字、下劃線,“\w”

a = '99 _\sl3'
import re

qingjun3 = re.match("\d\d\s\w\D",a)   ##  \w等效[a-zA-Z0-9_]
print(qingjun3.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
7.自動(dòng)轉(zhuǎn)義,”r““表示原始字符串,有了它,字符串里的特殊意義符號(hào)就會(huì)自動(dòng)加轉(zhuǎn)義符。

a = '99\\aks'
import re

qingjun3 = re.match("\d\d\\\\[a-z][a-z][a-z]",a)    ##不加r,則需要額外對(duì)\轉(zhuǎn)義。
qingjun4 = re.match(r"\d\d\\[a-z][a-z][a-z]",a)    ##加r,自動(dòng)對(duì)\轉(zhuǎn)義。
print(qingjun3)
print(qingjun4)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.3 數(shù)量匹配

字符 描述
* 匹配前面的子表達(dá)式0次或多次(無(wú)限次)
+ 匹配前面的子表達(dá)式1次或多次
? 匹配前面的子表達(dá)式0次或1次
{n} 匹配花括號(hào)前面字符n個(gè)字符
{n,} 匹配花括號(hào)前面字符至少n個(gè)字符
{n,m} 匹配花括號(hào)前面字符至少n個(gè)字符,最多m個(gè)字符

1.匹配0次或無(wú)限次,“ * ”的用法。

a = 'dddjsksls'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"d*",a)    ##匹配d出現(xiàn)的0次或多次。
qingjun5 = re.match(r"dddj*",a)    ##匹配j出現(xiàn)的0次或多次。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.匹配1次或多次,“ + ”的用法。

a = 'dddjsksls'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"d+",a)    ##匹配d出現(xiàn)的1次或多次。
qingjun5 = re.match(r"\D+",a)    ##前面字符出現(xiàn)1次或多次。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
3.匹配1次或多次,“ ? ”的用法。

a = 'dddjsksls'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"dd?",a)    ##匹配d出現(xiàn)的0次或1次。
qingjun5 = re.match(r"\D?",a)    ##前面字符出現(xiàn)0次或1次。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
4.限制匹配,只匹配{ n }前的n個(gè)字符,超過(guò)n個(gè)字符的之外所有字符都不能被匹配到。

a = '136182290672292'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"\d+",a)    ##匹配所有字符。
qingjun5 = re.match(r"\d{11}",a)    ##限制匹配前11位字符。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
5.限制匹配,至少匹配{ n, }中n個(gè)字符。

a = '136182290672292'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"\d+",a)    ##匹配所有字符。
qingjun5 = re.match(r"\d{11}",a)    ##限制匹配前11位字符。
qingjun6 = re.match(r"\d{11,}",a)    ##至少匹配前11位字符。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())
print(qingjun6.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
6.限制匹配,至少匹配{ n,m }中前n位字符,且至多匹配前m位字符。

a = '136182290672292'
import re

qingjun3 = re.match(".*",a)   ##匹配所有字符。
qingjun4 = re.match(r"\d+",a)    ##匹配所有字符。
qingjun5 = re.match(r"\d{11}",a)    ##限制匹配前11位字符。
qingjun6 = re.match(r"\d{11,}",a)    ##至少匹配前11位字符。
qingjun7 = re.match(r"\d{11,13}",a)    ##至少匹配前11位,至多匹配13位字符。
print(qingjun3.group())
print(qingjun4.group())
print(qingjun5.group())
print(qingjun6.group())
print(qingjun7.group())

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.4 邊界匹配

字符 描述
^ 匹配以什么開(kāi)頭
$ 匹配以什么結(jié)尾
\b 匹配單詞邊界
\B 匹配非單詞邊界

1.例一,判斷用戶輸入的郵箱格式。

import re

email = input("請(qǐng)輸入你的郵箱:")
qingjun = re.match('^\w+@[a-z]+\.[a-z]+$',email)   #2571788322@qq.com
if qingjun:
    print("格式正確!")
else:
    print("格式錯(cuò)誤!")

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.5 分組匹配

字符 描述
| 匹配豎杠兩邊的任意一個(gè)正則表達(dá)式
(re) 匹配小括號(hào)中正則表達(dá)式。使用\n反向引用,n是數(shù)字,從1開(kāi)始編號(hào),表示引用第n個(gè)分組匹配的內(nèi)容。
(?Pre) 分組別名,name是表示分組名稱
(?P=name) 引用分組別名

1.分組選擇匹配,能匹配中()中的任意一個(gè)。

##判斷用戶輸入的郵箱格式。
import re

email = input("請(qǐng)輸入你的郵箱:")
qingjun = re.match('^(\w|-)+@[a-z]+\.(com|163)+$',email)   #-2571788322@qq.com、-2571788322@qq.163
if qingjun:
    print("格式正確!")
else:
    print("格式錯(cuò)誤!")

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
2.引用分組。

import re
s = '<f1>18213921321<f1>'
qingjun1 = re.match('<(\w+).*<(\w+)>',s)   ##qingjun1效果等于qingjun2。
qingjun2 = re.match('<(\w+).*<(\\1)>',s)  ##正常語(yǔ)法是\n,n為數(shù)字,這里需要轉(zhuǎn)義一下,表示引用第一個(gè)分組結(jié)果。

print(qingjun2.group())   ##匹配所有分組。
print(qingjun2.group(1))   ##匹配第1個(gè)分組。
print(qingjun2.group(2))   ##匹配第2個(gè)分組。

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

3.分組別名引用。

import re
s = '<f1>18213921321<f1>'
qingjun = re.match('<(?P<baimu1>\w+).*<(?P<baimu2>\w+)>',s)  ##常對(duì)分組定義別名,因?yàn)橐脭?shù)字容易出錯(cuò)。
print(qingjun.group())   ##匹配所有分組
print(qingjun.group("baimu1"))   ##引用baimu1分組內(nèi)容。
print(qingjun.group("baimu2"))   ##引用baimu2分組內(nèi)容。

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.6 貪婪模式&非貪婪模式

  • 貪婪模式:盡可能最多匹配。
  • 非貪婪模式:盡可能最少匹配,一般在量詞(*、+)后面加個(gè)?問(wèn)號(hào)就是非貪婪模式。

1.例一,貪婪模式和非貪婪模式的區(qū)別。

import re
s = "hello 666666"
result = re.match("hello 6+", s) # 貪婪匹配
print(result)
result = re.match("hello 6+?", s) # 非貪婪匹配
print(result)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
2.例2,貪婪模式。

import re
s = "我今年23335歲"
result = re.match("\w+(\d+)\w+", s) # 貪婪匹配
print(result.group(1))

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
3.例三,非貪婪模式。

import re
s = "我今年23335歲"
result = re.match("\w+?(\d+)\w+", s) # 貪婪匹配
print(result.group(1))

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維

2.7 標(biāo)志位

字符 描述
re.I/re.IGNORECASE 忽略大小寫(xiě)
re.S/re.DOTAIL 匹配所有字符,包括換行符\n,如果沒(méi)這個(gè)標(biāo)志將匹配除了換行符

1.忽略大小寫(xiě)匹配。

import re
s = "hello world"
result1 = re.match("Hello",s)
print(result1)

result2 = re.match("Hello",s,re.I)   ##寫(xiě)法一。
print(result2) 

result3 = re.match("Hello",s,re.IGNORECASE)    ##寫(xiě)法二。
print(result3)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維
2.匹配所有字符,包括換行符。

import re
s = """hello
world
"""

result2 = re.match("h.*",s,re.S)  
print(result2)

python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作,python,數(shù)據(jù)庫(kù),python,oracle,運(yùn)維文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-660903.html

到了這里,關(guān)于python基礎(chǔ)5——正則、數(shù)據(jù)庫(kù)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python辦公自動(dòng)化 – 自動(dòng)化文本翻譯和Oracle數(shù)據(jù)庫(kù)操作

    Python辦公自動(dòng)化 – 自動(dòng)化文本翻譯和Oracle數(shù)據(jù)庫(kù)操作

    以下是往期的文章目錄,需要可以查看哦。 Python辦公自動(dòng)化 – Excel和Word的操作運(yùn)用 Python辦公自動(dòng)化 – Python發(fā)送電子郵件和Outlook的集成 Python辦公自動(dòng)化 – 對(duì)PDF文檔和PPT文檔的處理 Python辦公自動(dòng)化 – 對(duì)Excel文檔和數(shù)據(jù)庫(kù)的操作運(yùn)用、設(shè)置計(jì)劃任務(wù) Python辦公自動(dòng)化 – 對(duì)

    2024年01月17日
    瀏覽(24)
  • Python基礎(chǔ)之?dāng)?shù)據(jù)庫(kù)操作

    Python基礎(chǔ)之?dāng)?shù)據(jù)庫(kù)操作

    一、安裝第三方庫(kù)PyMySQL 1、在PyCharm中通過(guò) 【File】-【setting】-【Python Interpreter】搜索 PyMySQL進(jìn)行安裝 2、通過(guò)PyCharm中的 Terminal 命令行 輸入: pip install PyMySQL 注:通過(guò)pip安裝,可能會(huì)提示需要更新pip,這時(shí)可執(zhí)行:pip install --upgrade pip 進(jìn)行更新pip 二、mysql數(shù)據(jù)庫(kù)查詢(SELECT) 1、

    2024年01月24日
    瀏覽(29)
  • 數(shù)據(jù)庫(kù)運(yùn)維實(shí)操優(yōu)質(zhì)文章分享(含Oracle、MySQL等) | 2023年5月刊

    本文為大家整理了墨天輪數(shù)據(jù)社區(qū)2023年5月發(fā)布的優(yōu)質(zhì)技術(shù)文章,主題涵蓋Oracle、MySQL、PostgreSQL等數(shù)據(jù)庫(kù)的安裝配置、故障處理、性能優(yōu)化等日常實(shí)踐操作,以及常用腳本、注意事項(xiàng)等總結(jié)記錄,分享給大家: Oracle優(yōu)質(zhì)技術(shù)文章 概念梳理安裝配置 Oracle的rwp之旅 Oracle之Hash J

    2024年02月10日
    瀏覽(49)
  • 數(shù)據(jù)庫(kù)運(yùn)維實(shí)操優(yōu)質(zhì)文章分享(含Oracle、MySQL等) | 2023年3月刊

    本文為大家整理了墨天輪數(shù)據(jù)社區(qū)2023年3月發(fā)布的優(yōu)質(zhì)技術(shù)文章,主題涵蓋Oracle、MySQL、PostgreSQL等數(shù)據(jù)庫(kù)的基礎(chǔ)安裝配置操作、故障處理、性能優(yōu)化等日常實(shí)踐操作,以及概念梳理、常用腳本等總結(jié)記錄,分享給大家: Oracle優(yōu)質(zhì)技術(shù)文章 概念梳理基礎(chǔ)配置 Oracle之?dāng)?shù)據(jù)文件和

    2023年04月21日
    瀏覽(54)
  • 【100天精通python】Day30:使用python操作數(shù)據(jù)庫(kù)_數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)

    【100天精通python】Day30:使用python操作數(shù)據(jù)庫(kù)_數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)

    ?專欄導(dǎo)讀? 專欄訂閱地址: https://blog.csdn.net/qq_35831906/category_12375510.html 1.1 什么是數(shù)據(jù)庫(kù)? ????????數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化存儲(chǔ)和組織數(shù)據(jù)的集合,它可以被有效地訪問(wèn)、管理和更新。數(shù)據(jù)庫(kù)的目的是為了提供一種可靠的方式來(lái)存儲(chǔ)和管理大量的數(shù)據(jù),以便用戶和應(yīng)用程序

    2024年02月13日
    瀏覽(35)
  • 零基礎(chǔ)學(xué)Python|Python高階-使用Python操作數(shù)據(jù)庫(kù)

    零基礎(chǔ)學(xué)Python|Python高階-使用Python操作數(shù)據(jù)庫(kù)

    ? 作者主頁(yè):編程指南針 作者簡(jiǎn)介:Java、前端、Python開(kāi)發(fā)多年,做過(guò)高程,項(xiàng)目經(jīng)理,架構(gòu)師 主要內(nèi)容:Java項(xiàng)目開(kāi)發(fā)、畢業(yè)設(shè)計(jì)開(kāi)發(fā)、面試技術(shù)整理、最新技術(shù)分享 收藏點(diǎn)贊不迷路 關(guān)注作者有好處 文末獲得源碼 數(shù)據(jù)庫(kù)作為存儲(chǔ)系統(tǒng)數(shù)據(jù)的主要工具,擔(dān)負(fù)著數(shù)據(jù)持久化存

    2024年02月10日
    瀏覽(23)
  • 用SQL語(yǔ)句操作Oracle數(shù)據(jù)庫(kù)——數(shù)據(jù)更新

    用SQL語(yǔ)句操作Oracle數(shù)據(jù)庫(kù)——數(shù)據(jù)更新

    數(shù)據(jù)庫(kù)中的數(shù)據(jù)更新操作有3種:1)向表中添加若干行數(shù)據(jù)(增);2)刪除表中的若干行數(shù)據(jù)(刪);3)修改表中的數(shù)據(jù)(改)。對(duì)于這3種操作,SQL語(yǔ)言中有3種相應(yīng)的語(yǔ)句與之對(duì)應(yīng)。接下來(lái)讓我們逐一詳細(xì)地了解一下。 本文我們依然使用以下三個(gè)表來(lái)進(jìn)行數(shù)據(jù)更新操作:

    2024年01月19日
    瀏覽(34)
  • Linux系統(tǒng)下操作Oracle數(shù)據(jù)庫(kù)

    Oracle Database,又名Oracle RDBMS,或簡(jiǎn)稱Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它是在數(shù)據(jù)庫(kù)領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品??梢哉f(shuō)Oracle數(shù)據(jù)庫(kù)系統(tǒng)是世界上流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小微機(jī)環(huán)境。它是一種

    2023年04月08日
    瀏覽(87)
  • C# Dapper 操作Oracle數(shù)據(jù)庫(kù)

    C# Dapper 操作Oracle數(shù)據(jù)庫(kù)

    nuget安裝內(nèi)容? ?1.配置連接字符串?OracleConnectionString這個(gè)可用 ?2.讀取配置文件類 3.Dapper數(shù)據(jù)庫(kù)操作類? 4.操作數(shù)據(jù)實(shí)例?

    2024年02月10日
    瀏覽(21)
  • Linux鏈接oracle數(shù)據(jù)庫(kù)啟動(dòng)——操作步驟

    原本的畫(huà)面會(huì)變?yōu)?接著請(qǐng)輸入 輸入 另外停止數(shù)據(jù)庫(kù)的指令如下: ? 回到終端機(jī)模式,輸入:ps -ef|grep ora_ (作用是:查看是否有Oracle的進(jìn)程,如果有,大多數(shù)情況說(shuō)明啟動(dòng)了。) 輸入:$ lsnrctl status (作用是:檢查監(jiān)聽(tīng)是否啟動(dòng)。) 以下為沒(méi)有啟動(dòng)。 如果沒(méi)有啟動(dòng),可以輸入:$

    2024年02月04日
    瀏覽(93)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包