正則化學習

2021-07-25 08:35:37 字數 2071 閱讀 4750

總結一下最近學的正則化知識,裡面有一些自己的理解。如果有錯,歡迎討論。

概念捋清:我的理解是正則化表達是通過一組符號表達一種字串組織結構,相當於用乙個表示式表示了乙個字串組合的集合。

首先考慮單個匹配,從表示式的基本符號開始著手。

1.非重複選擇:

系統給定選擇:\d 數字,\s 空格,\w 字母或者數字 . 任意字元。把小寫變大寫代表非,比如\d表示非數字

自定義選擇:1.1  | 表或,如ac|bc,[abc] 表示這個位點字元為方括號中的乙個,括號內字串是拆開了或的關係,在中加入^表示非。

注:字串或者表示式有位置關係,而或是沒有位置關係的,比如原字串為ac,考慮[c,b]|[a,b],其實效果與[a,b,c,d]一樣,^只能在裡表示非的意思

2.重複選擇:

系統給定選擇:?0或1次,+ 次數大於等於1 ,*任意次數。

注:?在正則化中通常表示要進行一些特殊操作

注:通常匹配的時候都是貪婪模式,即會輸出匹配最多的情況,如原字串為abbbbb,正規表示式為ab+,則會輸出abbbbb,加上?後變為非貪婪模式,如ab*?,輸出為ab

自定義選擇:a a重複n次,a a重複 n到m 次。

字串組合重複:使用(),如(ab)

注:在re函式中,括號還有分組的意思,如果想要取消分組,公式為(?:string),如(?:abc),具體後面**。

3.位置確定:

每行的:^開頭 $結尾

全文性質的:\a  開頭 \z 結尾

分隔:\b 大寫為非的意思 

注:在使用re.search('\ba','a a').group()的時候報錯,改為re.search(r'\ba','a  a')後成功。

為什麼要用 r'\ba'或『\\ba』才能在『a a』中匹配出a?

正規表示式匹配反斜槓"\",為什麼是"\\\\"或是 r"\\"呢?

因為在正規表示式中\為特殊符號,為了取消它在正規表示式中的特殊意義需要加乙個\就變成了\\,但是問題又來了,\也是字串中的特殊字元,所以又要分別對兩個\取消其特殊意義,即為\\\\。python中有乙個原始字串操作符,用於那些字串中出現特殊字元,在原始字串中,沒有轉義字元和不能列印的字元。這樣就可以取消了\在字串中的轉義功能,即r"\\"。也就是說\b並不是正規表示式的命令,而是字串的命令?正規表示式中的\和字串中的\在命令出現重疊的時候是不一樣的,正規表示式在更底層,要後進行轉意,也就是先生成字串,再在字串的基礎上進行正則表達,『\ba』生成字串就是退格a,需要再加乙個\,這樣生成的字串才是\ba,如果命令不重疊就會直接生成\,可以嘗試print 『\dr』,結果為'\dr'.那麼r『』轉的到底是字串的轉意還是正則化的轉意?考慮r『\ba』,作用在1a上,如果去掉的是正則化轉意應該沒有輸出,所以去掉的應該是字串的,但是這樣有乙個邏輯缺陷,如果『\ds』是先變成字串再用正則化表示,'\ds'是's',那麼『s』應當可以用『\ds』輸出,但是用程式表示出來會報錯,個人理解是為了實現對字串所有結構的識別,字串中的\d被編譯成了其他的編碼,從這個角度出發,『\ds』 字串應該可以用'\ds'識別,re.search('\ds','\ds').group(),結果為『\x08s』,所以這個理解應該是對的。

4.分組

(?p) 把括號內匹配定為name組(原有排序組名仍在)

/number 引用第number組的字串,如原字串『1a2a2』,'(\d)a\1',會輸出2a2

(?p=name)引用name組的字串,

5.其他

(?mode)string 表示用某種模式對後面string進行匹配

6.條件選擇

a(?=string)表示a後為string表示式,但是該位置不輸出,相當於乙個條件選擇,如a(?='b'),輸出後面為b的a

a(?!)和上面相反

a(?<=)a之前的內容匹配後才能輸出

a(?<!)和上相反

(?(name)true|false)如果name組的字串匹配到了就要匹配true表示式, 否則匹配false表示式。

先到這,有空繼續補

re核心函式

findall

match

search

compile

subsplit

強化學習 強化學習基礎

為了應對車載網路中通訊環境快速變化的難題,可以使用強化學習進行解決,這裡對強化學習的基礎進行整理。主要的應用場景為車載網路中資源分配問題。本文源自莫煩python 強化學習章節,有需要請查閱原文 20200413補充了一些內容,來自這篇部落格,是李巨集毅的深度強化學習的筆記。強化學習的主要構成有 a...

強化學習 1 1 0 強化學習介紹

abstract 本文介紹reinforcement learning的具體特點和與其他機器學習演算法不同之處,本文是乙個骨架性的文章,所有專有名詞都保持英文原始單詞,具體內容會在後續中給出詳細解答。keywords reinforcement learning,situation,action,e...

離散化學習

有些資料本身很大,自身無法作為陣列的下標儲存對應的屬性。如果這時只是需要這堆資料的相對屬性,那麼可以對其進行離散化處理!離散化 當資料只與它們之間的相對大小有關,而與具體是多少無關時,可以進行離散化。例如9 1 0 5 4 與 5 2 1 4 3 的逆序對個數相同。設有4個數 1234567 123...