摘要:匹配并捕獲該匹配的子表達(dá)式。執(zhí)行正向預(yù)測先行搜索的子表達(dá)式,該表達(dá)式匹配處于匹配的字符串的起始點(diǎn)的字符串。續(xù)感謝好東西傳送門機(jī)器學(xué)習(xí)日報(bào)的推薦,我了解到了北京知識圖譜學(xué)習(xí)小組第一次線下活動(dòng)中關(guān)于正則學(xué)習(xí)閱讀資料,在這里收藏并分享。
用途
正則表達(dá)式可以
測試字符串內(nèi)的模式
替換文本
基于模式匹配從字符串中提取子字符串
RegEx語法正則表達(dá)式(Regular Expression, RegEx)通過單個(gè)字符串來匹配一系列符合此語法規(guī)則的目標(biāo)字符串。
元字符以及其在RegEx中的行為說明列表:
元字符 | 行為 |
---|---|
^ | 匹配輸入字符串開始的位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 還會(huì)與“n”或“r”之后的位置匹配。 |
$ | 匹配輸入字符串結(jié)尾的位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,$ 還會(huì)與“n”或“r”之前的位置匹配。 |
* | 零次或多次匹配前面的字符或子表達(dá)式。例如,zo 匹配“z”和“zoo”。 等效于 {0,}。 |
+ | 一次或多次匹配前面的字符或子表達(dá)式。例如,“zo+”與“zo”和“zoo”匹配,但與“z”不匹配。+ 等效于 {1,}。 |
? | 零次或一次匹配前面的字符或子表達(dá)式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。 |
{n} | n 是非負(fù)整數(shù)。正好匹配 n 次。例如,“o{2}”與“Bob”中的“o”不匹配,但與“food”中的兩個(gè)“o”匹配。 |
{n,} | n 是非負(fù)整數(shù)。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。“o{1,}”等效于“o+”。“o{0,}”等效于“o*”。 |
{n,m} | M 和 n 是非負(fù)整數(shù),其中 n <= m。匹配至少 n 次,至多 m 次。例如,“o{1,3}”匹配“fooooood”中的頭三個(gè) o。"o{0,1}" 等效于 "o?"。注意:您不能將空格插入逗號和數(shù)字之間。 |
? | 當(dāng)此字符緊隨任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后時(shí),匹配模式是“非貪心的”。“非貪心的”模式匹配搜索到的、盡可能短的字符串,而默認(rèn)的“貪心的”模式匹配搜索到的、盡可能長的字符串。例如,在字符串“oooo”中,“o+?”只匹配單個(gè)“o”,而“o+”匹配所有“o”。 |
. | 匹配除“n”之外的任何單個(gè)字符。若要匹配包括“n”在內(nèi)的任意字符,請使用諸如“[sS]”之類的模式。 |
(pattern) | 匹配 pattern 并捕獲該匹配的子表達(dá)式。可以使用 $0…$9 屬性從結(jié)果“匹配”集合中檢索捕獲的匹配。若要匹配括號字符 ( ),請使用“(”或者“)”。 |
(?:pattern) | 匹配 pattern 但不捕獲該匹配的子表達(dá)式,即它是一個(gè)非捕獲匹配,不存儲(chǔ)供以后使用的匹配。這對于用“or”字符組合模式部件的情況很有用。 |
(?=pattern) | 執(zhí)行正向預(yù)測先行搜索的子表達(dá)式,該表達(dá)式匹配處于匹配 pattern 的字符串的起始點(diǎn)的字符串。它是一個(gè)非捕獲匹配,即不能捕獲供以后使用的匹配。 |
(?!pattern) | 執(zhí)行反向預(yù)測先行搜索的子表達(dá)式,該表達(dá)式匹配不處于匹配 pattern 的字符串的起始點(diǎn)的搜索字符串。它是一個(gè)非捕獲匹配,即不能捕獲供以后使用的匹配。 |
[xyz] | 字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。 |
[^] | 反向字符集。匹配未包含的任何字符。 |
[a-z] | 字符范圍。匹配指定范圍內(nèi)的任何字符。例如,“[a-z]”匹配“a”到“z”范圍內(nèi)的任何小寫字母。 |
b | 匹配一個(gè)字邊界,即字與空格間的位置。例如,“erb”匹配“never”中的“er”,但不匹配“verb”中的“er”。 |
B | 非字邊界匹配。“erB”匹配“verb”中的“er”,但不匹配“never”中的“er”。 |
cx | 匹配 x 指示的控制字符。例如,cM 匹配 Control-M 或回車符。x 的值必須在 A-Z 或 a-z 之間。如果不是這樣,則假定 c 就是“c”字符本身。 |
d | 數(shù)字字符匹配。等效于 [0-9]。 |
D | 非數(shù)字字符匹配。 |
f | 換頁符匹配。等效于 x0c 和 cL。 |
n | 換行符匹配。等效于 x0a 和 cJ。 |
r | 匹配一個(gè)回車符。等效于 x0d 和 cM。 |
s | 匹配任何空白字符,包括空格、制表符、換頁符等。與 [ fnrtv] 等效。 |
S | 匹配任何非空白字符。 |
t | 制表符匹配。與 x09 和 cI 等效。 |
v | 垂直制表符匹配。與 x0b 和 cK 等效。 |
w | 匹配任何字類字符,包括下劃線。與“[A-Za-z0-9_]”等效。 |
W | 與任何非單詞字符匹配。 |
num | 匹配 num,此處的 num 是一個(gè)正整數(shù)。到捕獲匹配的反向引用。例如,“(.)1”匹配兩個(gè)連續(xù)的相同字符。 |
表格轉(zhuǎn)載自 Microsoft博客:正則表達(dá)式語法
RegEx用法實(shí)例說明 | 正則表達(dá)式 |
---|---|
電子郵件(Email) | w+([-+.]w+)@w+([-.]w+).w+([-.]w+)* |
QQ號碼 | [1-9]d{4,} |
密碼(由數(shù)字/大寫字母/小寫字母/標(biāo)點(diǎn)符號組成,四種都必有,8位以上) | (?=^.{8,}$)(?=.d)(?=.W+)(?=.[A-Z])(?=.[a-z])(?!.n).$ |
漢字(字符) | [u4e00-u9fa5] |
中文及全角標(biāo)點(diǎn)符號(字符) | [u3000-u301eufe10-ufe19ufe30-ufe44ufe50-ufe6buff01-uffee] |
中國大陸手機(jī)號碼 | 1d{10} |
中國大陸郵政編碼 | [1-9]d{5} |
中國大陸身份證號(15位或18位) | d{15}(dd[0-9xX])? |
非負(fù)整數(shù)(正整數(shù)或零) | d+ |
正整數(shù) | 0-9]*[1-9* |
負(fù)整數(shù) | -0-9]*[1-9* |
整數(shù) | -?d+ |
小數(shù) | (-?d+)(.d+)? |
不包含abc的單詞 | b((?!abc)w)+b |
表格節(jié)選自 常用正則表達(dá)式
Memo:上面部分的模式,例如在Vim編輯器的find模式(/)下,無法進(jìn)行匹配。
Python中常見的RegEx用法為了避免上述部分模式無法匹配的問題,實(shí)際操作的時(shí)候以參考文檔(RE python2)為準(zhǔn)。
如果要替換一個(gè)字符串中的某個(gè)模式,如下:
import re txt = [the text for processing] regex = [your regular expression] string = [your string to replace the others] data, number = re.subn(re.compile(regex), string, txt) # or you could use data, number = re.subn(regex, string, txt)
模塊中還有其他常用方法:
re.match
re.search
re.findall
當(dāng)然,官方文檔中還介紹了直接使用re的方法和使用re.compile()之后再進(jìn)行正則的區(qū)別。具體請參考這里。
Weiming Hu
感謝好東西傳送門機(jī)器學(xué)習(xí)日報(bào)的推薦,我了解到了北京知識圖譜學(xué)習(xí)小組第一次線下活動(dòng)中關(guān)于正則學(xué)習(xí)閱讀資料,在這里收藏并分享。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37919.html
摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開源平...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計(jì)》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書里的一些問題。將會(huì)討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時(shí)器等話題。1. 安全的類型檢測...
摘要:假設(shè)現(xiàn)在想把字符串你好,,世界中的中文提取出來,可以這么做你好,,世界注意到,我們在正則表達(dá)式前面加上了兩個(gè)前綴,其中表示使用原始字符串,表示是字符串。本文標(biāo)題為正則表達(dá)式模塊簡明筆記本文鏈接為參考資料正則表達(dá)式 簡介 正則表達(dá)式(regular expression)是可以匹配文本片段的模式。最簡單的正則表達(dá)式就是普通字符串,可以匹配其自身。比如,正則表達(dá)式 hello 可以匹配字符...
閱讀 3166·2021-11-23 09:51
閱讀 678·2021-10-14 09:43
閱讀 3200·2021-09-06 15:00
閱讀 2403·2019-08-30 15:54
閱讀 2557·2019-08-30 13:58
閱讀 1840·2019-08-29 13:18
閱讀 1372·2019-08-27 10:58
閱讀 506·2019-08-27 10:53