最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)清洗和處理--正則表達(dá)式

2021-08-16 19:51 作者:辦公自動(dòng)化學(xué)習(xí)  | 我要投稿


圖片

????????我們?nèi)粘9ぷ髦薪?jīng)常會(huì)處理一些不規(guī)范的數(shù)據(jù),通過正則表達(dá)式可以很輕易的匹配出需要的信息,快速過濾數(shù)據(jù)?;谡齽t表達(dá)式可以制作海量數(shù)據(jù)清洗系統(tǒng),網(wǎng)絡(luò)爬蟲,網(wǎng)絡(luò)日志數(shù)據(jù)分析,表單驗(yàn)證等。

????????正則表達(dá)式簡(jiǎn)化了我們的代碼量,比如提取公式中的單元格區(qū)域和函數(shù)名,若用代碼寫會(huì)非常繁瑣,而正則表達(dá)式只有一行字符串。

圖片

????????要從字符串中取出“7開頭5位數(shù)”的憑證號(hào),可以用正則表達(dá)式獲取,提取表達(dá)式為:(非數(shù)字)+7+(連續(xù)4位數(shù))+(非數(shù)字)。

實(shí)例鏈接:https://pan.baidu.com/s/1W84-xaSe52COEXTiZxVjug

提取碼:wx5l

--來自百度網(wǎng)盤超級(jí)會(huì)員V5的分享

圖片


??????? VBA中不支持正則的反向肯定預(yù)查,可以嵌套正則表達(dá)式來處理。

(?<=pattern)反向(look behind)肯定預(yù)查,與正向肯定預(yù)查類似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。

????????做一個(gè)自定義函數(shù)reg,先用表達(dá)式取出需要的字符,這時(shí)最前面可能會(huì)有非數(shù)字字符。

圖片
圖片


再嵌套表達(dá)式^\D去掉前面的非數(shù)字。

圖片



自定義方法將憑證號(hào)全部展開

圖片


也可以選擇單元格區(qū)域,加上轉(zhuǎn)置公式生成一列排好序的清單,自定義函數(shù)實(shí)現(xiàn)方法可查看源碼。

圖片


VBA中文本排序可以調(diào)用javascript對(duì)象快速實(shí)現(xiàn)。

Set js = CreateObject("msscriptcontrol.scriptcontrol")

js.Language = "javascript"

js.AddCode "function arrsort(a){return a.toArray().sort()}"

js.codeobject.arrsort(array)


在正則實(shí)例表中用replaceValue(A2,B2)自定義函數(shù)可以對(duì)一些表達(dá)式數(shù)據(jù)進(jìn)行替代。

圖片


常用的元字符

代碼說明.匹配除換行符以外的任意字符\w匹配字母或數(shù)字或下劃線或漢字\s匹配任意的空白符\d匹配數(shù)字\b匹配單詞的開始或結(jié)束^匹配字符串的開始$匹配字符串的結(jié)束


常用的限定符

代碼/語法說明*重復(fù)零次或更多次+重復(fù)一次或更多次?重復(fù)零次或一次{n}重復(fù)n次{n,}重復(fù)n次或更多次{n,m}重復(fù)n到m次


常用的反義代碼

代碼/語法說明\W匹配任意不是字母,數(shù)字,下劃線,漢字的字符\S匹配任意不是空白符的字符\D匹配任意非數(shù)字的字符\B匹配不是單詞開頭或結(jié)束的位置[^x]匹配除了x以外的任意字符[^aeiou]匹配除了aeiou這幾個(gè)字母以外的任意字符


分組語法

捕獲
(exp)匹配exp,并捕獲文本到自動(dòng)命名的組里(?<name>exp)匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)(?:exp)匹配exp,不捕獲匹配的文本,也不給此分組分配組號(hào)位置指定
(?=exp)匹配exp前面的位置(?<=exp)匹配exp后面的位置(?!exp)匹配后面跟的不是exp的位置(?<!exp)匹配前面不是exp的位置注釋
(?#comment)這種類型的組不對(duì)正則表達(dá)式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀


懶惰限定符

*?重復(fù)任意次,但盡可能少重復(fù)+?重復(fù)1次或更多次,但盡可能少重復(fù)??重復(fù)0次或1次,但盡可能少重復(fù){n,m}?重復(fù)n到m次,但盡可能少重復(fù){n,}?重復(fù)n次以上,但盡可能少重復(fù)


常用的處理選項(xiàng)

名稱說明IgnoreCase(忽略大小寫)匹配時(shí)不區(qū)分大小寫。Multiline(多行模式)更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個(gè)字符串的開頭和結(jié)尾匹配。?Singleline(單行模式)更改.的含義,使它與每一個(gè)字符匹配(包括換行符\n)。?IgnorePatternWhitespace(忽略空白)忽略表達(dá)式中的非轉(zhuǎn)義空白并啟用由#標(biāo)記的注釋。RightToLeft(從右向左查找)匹配從右向左而不是從左向右進(jìn)行。ExplicitCapture(顯式捕獲)僅捕獲已被顯式命名的組。ECMAScript(JavaScript兼容模式)使表達(dá)式的行為與它在JavaScript里的行為一致。


其他語法

\a報(bào)警字符(打印它的效果是電腦嘀一聲)\b通常是單詞分界位置,但如果在字符類里使用代表退格\t制表符,Tab\r回車\v豎向制表符\f換頁符\n換行符\eEscape\0nnASCII代碼中八進(jìn)制代碼為nn的字符\xnnASCII代碼中十六進(jìn)制代碼為nn的字符\unnnnUnicode代碼中十六進(jìn)制代碼為nnnn的字符\cNASCII控制字符。比如\cC代表Ctrl+C\A字符串開頭(類似^,但不受處理多行選項(xiàng)的影響)\Z字符串結(jié)尾或行尾(不受處理多行選項(xiàng)的影響)\z字符串結(jié)尾(類似$,但不受處理多行選項(xiàng)的影響)\G當(dāng)前搜索的開頭\p{name}Unicode中命名為name的字符類,例如\p{IsGreek}(?>exp)貪婪子表達(dá)式(?<x>-<y>exp)平衡組(?im-nsx:exp)在子表達(dá)式exp中改變處理選項(xiàng)(?im-nsx)為表達(dá)式后面的部分改變處理選項(xiàng)(?(exp)yes|no)把exp當(dāng)作零寬正向先行斷言,如果在這個(gè)位置能匹配,使用yes作為此組的表達(dá)式;否則使用no(?(exp)yes)同上,只是使用空表達(dá)式作為no(?(name)yes|no)如果命名為name的組捕獲到了內(nèi)容,使用yes作為表達(dá)式;否則使用no(?(name)yes)同上,只是使用空表達(dá)式作為no


常用正則表達(dá)式:

"^\d+$"  //非負(fù)整數(shù)(正整數(shù) + 0)

"^[0-9]*[1-9][0-9]*$"  //正整數(shù)

"^((-\d+)|(0+))$"  //非正整數(shù)(負(fù)整數(shù) + 0)

"^-[0-9]*[1-9][0-9]*$"  //負(fù)整數(shù)

"^-?\d+$"    //整數(shù)

"^\d+(\.\d+)?$"  //非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點(diǎn)數(shù)

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負(fù)浮點(diǎn)數(shù)

"^(-?\d+)(\.\d+)?$"  //浮點(diǎn)數(shù)

"^[A-Za-z]+$"  //由26個(gè)英文字母組成的字符串

"^[A-Z]+$"  //由26個(gè)英文字母的大寫組成的字符串

"[^a-z+$]"? ? '由26個(gè)英文字母的小寫組成的字符串

" [^A-Za-z0-9]+$"  ‘由數(shù)字和26個(gè)英文字母組成的字符串

"^\w+$"  //由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串

/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/? ?// 年-月-日

/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/? ?// 月/日/年

"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"? ?//Emil

"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"? ?//電話號(hào)碼

"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"? ?//IP地址


匹配中文字符的正則表達(dá)式:[^\u4e00-\u9fa5]

匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

匹配空行的正則表達(dá)式:\n[\s| ]*\r

匹配HTML標(biāo)記的正則表達(dá)式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)

匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配網(wǎng)址URL的正則表達(dá)式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$

匹配帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

匹配國內(nèi)電話號(hào)碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?

匹配騰訊QQ號(hào):^[1-9]*[1-9][0-9]*$


本文使用 文章同步助手 同步

數(shù)據(jù)清洗和處理--正則表達(dá)式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
武平县| 太仓市| 稷山县| 安阳市| 获嘉县| 竹山县| 胶南市| 金川县| 小金县| 深泽县| 江城| 钦州市| 禄丰县| 东平县| 横山县| 武宁县| 襄垣县| 德化县| 时尚| 新民市| 府谷县| 肥东县| 靖远县| 华阴市| 黑河市| 永川市| 宁国市| 长宁区| 新河县| 榆中县| 丰原市| 资兴市| 内黄县| 徐水县| 岳阳市| 资兴市| 巫山县| 博客| 岳阳市| 馆陶县| 庆元县|