網站首頁 編程語言 正文
python正則表達式括號
python中re庫函數的簡單用法
re.findall(pattern,string)
- 匹配所有符合正則表達式的字符,返回一個列表
re.search(pattern,string)
- 查找第一個符合正則表達式的字符,返回一個Matcher對象。用group()或groups()方法取值
re.match(pattern,string)
- 查找第一個符合正則表達式的字符,要求完全符合,返回一個Matcher對象。用group()或groups()方法取值
正則表達式中的圓括號()的作用是對字符或元字符分組。
我錯把它的作用認為是將圓括號內的字符看成一個整體。
盡管在一些正則測試網站上,進行匹配時,把括號內的字符看成一個整體來匹配也能匹配到想要的結果。測試網站如:regex101等
然而在在寫python程序的時候,會出現不是我想要的結果。
如果正則表達式中多出使用了圓括號進行分組的話。
在使用findall方法匹配結果就會只有分組的結果(即括號內表達式匹配的內容),而不是整個表達式所匹配的內容。
如果使用search方法匹配,對返回的Matcher對象調用group()方法可以獲取完整的結果。但是在需要匹配多個結果時,還得用findall
所以在使用正則表達式時,若像我不太熟悉的話,避免使用圓括號來把一段表達式看成一個整體。
python正則表達式入門教程括號及字符
數據分析遇到字符串處理會有兩個階段涉及到正則表達式,一個是在數據庫階段一個是Python處理階段。作為一個小白學習正則也遇到很多彎路和難理解的點,梳理梳理學習的過程。
hive里面正則表達式可以用regexp_extract()在select里進行返回指定要求的內容,也可以用regexp在where里進行指定要求的限制條件;
python里面re.findall()或者df.str.extract()(pandas功能);
正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。學習正則需要記住兩類知識點加上實際案例的聯系就能很快的理解和掌握。
正則中語法規范:
括號區別
正則表達式中存在(),[],{}
1、():匹配小括號內的字符串,可以是一個,也可以是多個,常跟“|”(或)符號搭配使用,是多選結構的。() 是為了提取匹配的字符串。表達式中有幾個()就有幾個相應的匹配字符串
例:?
string= | ‘我正在學習python3的正則表達式,現在的日期是2019-01-22’ |
---|---|
目的 | 給定指定字符串進內容進行精準匹配獲取python |
hive | select regexp_extract(string,’(python)’,1) 返回結果為:python,1代碼返回正則的第幾個括號中的內容 |
python | re.findall(’(python)’,string)返回結果為:python |
2、【】:匹配字符組內的字符,比如咱們常用的[0-9a-zA-Z.*?!]等,在[]內的字符都是字符,不是元字符,比如“0-9”、“a-z”這中間的“-”就是連接符號,表示范圍的元字符,如果寫成[-!?*(]這樣的話,就是普通字符例:
string= | ‘我正在學習python3的正則表達式,現在的日期是2019-01-22’ |
---|---|
目的 | 給定字符進內容匹配獲取python |
hive | select regexp_extract(string,’[a-z]’,0) 返回結果為:python,0代碼返回符合正則的內容,如果有小括號可以寫1(如'([a-z]+)') |
python | re.findall(’[a-z]+’,string)返回結果為:python |
目的 | 給定字符進內容匹配獲取日期2019-01-22 |
hive | select regexp_extract(string,’([0-9]+.[0-9]+.[0-9]+)’,1) 返回結果為:2019-01-22 |
python | re.findall(’[0-9]+.[0-9]+.[0-9]+’,string)返回結果為:2019-01-22 |
需求增加 | 如果我要只需日期22這個部分 |
python | re.findall(’[0-9]+.[0-9]+.([0-9]+)’,string)返回結果為:22,和上面的對比發現在最后一個[0-9]+外面加了一個小括號,有小括號就返回小括號里面的內容 |
3、{ }一般用來表示匹配的長度,比如 \s{3} 表示匹配三個空格,\s{1,3}表示匹配一到三個空格例:
string= | ‘我正在學習python3的正則表達式,現在的日期是2019-01-22’ |
---|---|
目的 | 取出日期數據部分結果為2019,01,22 |
python | re.findall(’([0-9]{2,4})’,string) 返回結果為:[2019,01,22],python3中到3是一個數字,所以指定數據個數為2-4的就為日期部分的數字 |
常用正則表達式
匹配名 | 匹配表達式 | 例子 |
---|---|---|
轉義符 | \ | “n”匹配字符“n”。"\n"匹配一個換行符。串行"\\"匹配"\"而"\("則匹配"(" |
開始位置 | ^ | "abc,bac"匹配b開頭的bac[^b]([a-z]{3}) |
結束位置 | $ | "abce,abcd"匹配d結尾字母[a-z]+d$ |
表達式0次或多次 | * | ? |
表達式1次或多次 | + | ? |
表達式0次或1次 | ? | ? |
除\n任意字符 | . | ? |
單詞邊界 | \b | “er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er” |
非單詞邊界 | \B | “er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er” |
換頁符 | \f | ? |
空白行 | \n\s*\r | ? |
首尾空白字符 | ^\s* | \s*$ |
中文字符 | [\u4e00-\u9fa5] | ? |
雙字節字符(包含漢子在內) | [^\x00-\xff] | ? |
數字 | [0-9]或\d | ? |
非數字 | \D | ? |
小寫字母 | [a-z] | ? |
大寫字母 | [A-Z] | ? |
大小寫字母 | [a-zA-Z] | ? |
英文加數字 | a-z0-9 | ? |
原文鏈接:https://blog.csdn.net/weixin_43917430/article/details/108935233
相關推薦
- 2023-04-21 python查找指定依賴包簡介信息實現_python
- 2022-09-12 docker?清理緩存腳本解析_docker
- 2021-12-16 linux下wget命令的基本使用方法_Linux
- 2022-10-02 Redis常見限流算法原理及實現_Redis
- 2022-10-25 Python第三方常用模塊openpyxl的簡單介紹_python
- 2022-06-18 Android自定義彈框Dialog效果_Android
- 2022-05-15 c++11?實現枚舉值到枚舉名的轉換問題_C 語言
- 2022-04-18 h5,移動端瀏覽器通過css 實現頁面,元素橫向滾動
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支