stata命令詳解-函數(shù)regexm/regexr/regexs

1. 前言

在目前工作中,用stata清洗及分析數(shù)據(jù)王悍,感覺很順滑破镰。無奈不少同學因為help文件里的英文望而卻步。

帶著學習和分享的目的,根據(jù)工作經(jīng)驗鲜漩,給大家整理一些常用以及不太常用但很有用的命令源譬,并對該命令的help文件進行有側重的詳解。

2. 描述

regexm(s,re):字符串函數(shù)孕似。字符串匹配函數(shù)踩娘。當字符串s符合正則表達式re時,返回1鳞青,否則返回0.

regexr(s1,re,s2):字符串函數(shù)霸饲。字符串替換函數(shù)。將符合正則表達式re的字符串s1中的第一個子字符串替換未字符串s2臂拓,并返回替換后的結果字符串厚脉。

  • 當字符串s1中不包括符合正則表達式re的子字符串時,返回字符串s1胶惰。

regexs(n):字符串函數(shù)傻工。與regexr結合使用。返回regexm(s,re)第n個子表達式對應的子字符串孵滞。如果n=0中捆,則表示返回所有符合正則表達式的字符串。

3. 參數(shù)

  • regexm(s,re)

s:ASCII碼的字符串

re:正則表達式

  • regexr(s1,re,s2)

s1:ASCII碼的字符串

re:正則表達式

s2:ASCII碼的字符串

  • regexs(n)

n:取值范圍:0 ≤ n < 10

4. 舉例

*調(diào)入自帶數(shù)據(jù)auto
sysuse auto
*列出變量make中以B字母開頭的數(shù)據(jù)
generate bbegin = regexm(make, "^B")
list make if bbegin == 1
*同上
list make if regexm(make, "^B") == 1
bbegin.png
*列出變量中包含ck字符串的數(shù)據(jù)
list make if regexm(make, "ck") == 1
ck.png
*列出變量make中以數(shù)字結尾的數(shù)據(jù)
list make if regexm(make, "[0-9]$") == 1
digit.png
*生成新變量make2(通過復制變量make)
generate make2 = make
*將變量make2中以B字母開頭坊饶,3個數(shù)字+小寫字母結尾的數(shù)據(jù)替換成found
replace make2 = regexr(make2, "^B.*[0-9][0-9][0-9][a-z]$", "found")
*將變量make和make2不一樣的兩個變量顯示出來
list make make2 if make != make2
make2.png
*清除內(nèi)存數(shù)據(jù)
clear
*輸入變量number
input str15 number
                         number
             1. "(123) 456-7890"
             2. "(800) STATAPC"
             3. end
*將變量number中的(123) 456-7890轉為123-456-7890形式,其中泄伪,regexs(1)表示符合第1個子表達式[0-9]+,即括號中的數(shù)字的字符串匿级;regexs(2)表示符合第2個子表達式.*蟋滴,即)后的所有內(nèi)容。
gen str newnum = regexs(1) + "-" + regexs(2) if regexm(number,"^\(([0-9]+)\) (.*)")
*列出變量number和newnum
l number newnum
number.png

5.補充

  • 上述例子中涉及正則表達式(regular expression)中的元字符
元字符 含義 舉例
\ 后向引用痘绎,后面跟正則表達式中的某個元字符津函,表示匹配該符號。類似于轉義孤页。 \\匹配\尔苦;\-匹配-
^ 在表達式的開頭位置行施,表示接下來的表達式所要匹配的內(nèi)容位于字符串的開始的位置允坚。 ^B表示以B開頭;^\(表示以(開頭
$ 在表達式的結尾位置悲龟,表示錢買你的表達式所要匹配的內(nèi)容位于字符串結尾的位置屋讶。 [0-9]$表示以數(shù)字結尾
* 表示將前一個字符或子表達式匹配任意次數(shù),可以為0次须教。 XY*可以匹配X皿渗,也可以匹配XY,XYY,XY.....Y斩芭。
+ 表示將前一個字符或子表達式匹配至少1次。 XY+可匹配XY,XYY,XY.....Y乐疆,但不可匹配X划乖。
? 表示將前一個字符或子表達式匹配0次或1次。 XY?可匹配XXY
{n} n為一個非負整數(shù)挤土,表示將前一個字符或子表達式匹配n次琴庵。 XY{2}匹配XYY;只能用于以ustr開頭的4個正則表達式的字符串函數(shù)中
. 表示可以匹配任意字符 .*可以匹配任意字符或者不匹配任何字符仰美。
() 創(chuàng)建一個子表達式迷殿,可以提取或者替換括號內(nèi)的子表達式對應的字符串 ^\(([0-9]+)\) (.*)可拆成^,\(,([0-9]+),\),(.*),其中,([0-9]+),(.*)為子表達式
- 指定一個范圍 a-z:字母a到字母z范圍的小寫字母;A-Z:字母A到字母Z范圍的大寫字母咖杂;0-9:數(shù)值0-9范圍內(nèi)的數(shù)字庆寺。
[] 方括號內(nèi)的字符之一被用來進行匹配 [a-z]可以匹配a-z范圍內(nèi)的任意小寫字母

來源:http://www.360doc.com/content/16/1223/13/39103730_617058825.shtml

  • 序列
正則表達式 含義
\d 匹配數(shù)字字符
\D 匹配非數(shù)字字符
\s 匹配間隔符(空格)
\S 匹配非間隔符(非空格)
\w 匹配單詞字符
\W 匹配非單詞字符
\b 匹配詞界
\B 匹配非詞界

來源:https://blog.csdn.net/arlionn/article/details/85156842

  • 常用正則表達式
正則表達式 含義
[\u4e00-\u9fa5] 匹配中文字符
[^\x00-\xff] 匹配雙字節(jié)字符(包括漢字在內(nèi))
\n\s*\r 匹配空白行
<(\S*?)[^>]*>.*?</\1>|<.*? /> 匹配HTML標記
^\s*|\s*$ 匹配首尾空白字符
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配Email地址
[a-zA-z]+://[^\s]* 匹配網(wǎng)址URL
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配帳號是否合法(字母開頭,允許5-16字節(jié)诉字,允許字母數(shù)字下劃線)
\d{3}-\d{8}|\d{4}-\d{7} 匹配國內(nèi)電話號碼
[1-9][0-9]{4,} 匹配騰訊QQ號(騰訊QQ號從10000開始)
[1-9]\d{5}(?!\d) 匹配中國郵政編碼(中國郵政編碼為6位數(shù)字)
\d{15}|\d{18} 匹配身份證(中國的身份證為15位或18位)
\d+\.\d+\.\d+\.\d+ 匹配ip地址

來源:https://blog.csdn.net/wangjia55/article/details/7877915

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懦尝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子壤圃,更是在濱河造成了極大的恐慌陵霉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伍绳,死亡現(xiàn)場離奇詭異踊挠,居然都是意外死亡,警方通過查閱死者的電腦和手機冲杀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門止毕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漠趁,你說我怎么就攤上這事∪碳玻” “怎么了闯传?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卤妒。 經(jīng)常有香客問我甥绿,道長,這世上最難降的妖魔是什么则披? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任共缕,我火速辦了婚禮,結果婚禮上士复,老公的妹妹穿的比我還像新娘图谷。我一直安慰自己翩活,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布便贵。 她就那樣靜靜地躺著菠镇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪承璃。 梳的紋絲不亂的頭發(fā)上利耍,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音盔粹,去河邊找鬼隘梨。 笑死,一個胖子當著我的面吹牛舷嗡,可吹牛的內(nèi)容都是我干的轴猎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼咬崔,長吁一口氣:“原來是場噩夢啊……” “哼税稼!你這毒婦竟也來了?” 一聲冷哼從身側響起垮斯,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤郎仆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兜蠕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扰肌,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年熊杨,在試婚紗的時候發(fā)現(xiàn)自己被綠了曙旭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡晶府,死狀恐怖桂躏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情川陆,我是刑警寧澤剂习,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站较沪,受9級特大地震影響鳞绕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尸曼,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一们何、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧控轿,春花似錦冤竹、人聲如沸拂封。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烘苹。三九已至,卻和暖如春片部,著一層夾襖步出監(jiān)牢的瞬間镣衡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工档悠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留廊鸥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓辖所,卻偏偏與公主長得像惰说,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缘回,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Python中的正則表達式(re) import rere.match #從開始位置開始匹配吆视,如果開頭沒有則無re...
    BigJeffWang閱讀 7,061評論 0 99
  • Day 17 補充 重載:函數(shù)的重載 -- 函數(shù)名相同但是參數(shù)不同的函數(shù)可以有多個,但是python不支持函數(shù)...
    曉曉_007f閱讀 342評論 0 1
  • 搞懂Python 正則表達式用法 Python 正則表達式 正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一...
    廈熱閱讀 1,572評論 0 2
  • 正則表達式到底是什么東西?字符是計算機軟件處理文字時最基本的單位妙痹,可能是字母,數(shù)字授滓,標點符號,空格肆糕,換行符般堆,漢字等...
    獅子挽歌閱讀 2,141評論 0 9
  • 陽光明媚的一天,教學樓的周圍醒目的張貼著一條條關于考研的條幅极阅,不由得使得周圍的空氣開始凝結起來。有點沉重涨享,有點壓抑...
    程婭婭閱讀 451評論 0 2