1、匹配函数:regexm()和ustrregexm() (1)regexm(s,re)函数 第一个参数s表示字符串,第二个参数re代表正则表达式,如果正则表达式匹配到字符串s中的某个子字符串,则函数regexm(s,re)的返回值为1,否则为0。但是值得注意的是,由于regexm()是早期版本的正则表达式函数,所以不能识别元字符。 (2)ustrregexm(s,re,[,noc])函数 若正则表达式re能与字符串s中的某个子字符串匹配,则返回值为1,否则为0。在默认情况下,匹配是区分大小写的,但是如果定义noc为一个非零数值,则匹配时不区分大小写。 2、不用正则表达式匹配:strmatch(s1,s2)和strpos(s1,s2) (1)strmatch(s1,s2)函数 如果字符串s2能够完全匹配字符串s1,则返回值为1,否则为0。在字符串s2中,可以使用通配符?匹配任意一个字符,用通配符*匹配零个或任意多个字符。但要注意的是字符串s2与整个字符串s1匹配时,返回值才是1。而ustrregexm(s,re,[,noc])只要正则表达式re能匹配到字符串s中任意一个子字符串,返回值即为1。 (2)strpos(s1,s2)或index(s1,s2)函数 strpos(s1,s2)和index(s1,s2)其实是同一个函数,如果字符串s2是s1的子字符串,则strpos()返回值是s2首字符在s1中的位置。 3、提取函数:regexs()和ustrregexs() 匹配函数和提取函数一般需要配合使用,先匹配后提取。习惯地将regexm()与regexs()、ustrregexm()与ustrregexs()分别配合使用。 (1)regexs(n)函数 参数n为非负整数,表示提取regexm(s,re)函数匹配到地第n个子字符串。若n为0,则表示把整个正则表达式匹配到地内容全部提取出来。 (2)ustrregexs(n)函数 类似于regexs(n)函数,该函数提取出地字符串为ustrregexm(s,re,[,noc])函数中第n个子字符串匹配到的子字符串。若n=0,则提取整个正则表达式匹配到的内容。 4、替换函数:regexr()、ustrregexrf()和ustrregexra() subinstr(s1,s2,s3,n)可以实现替换功能,表示将字符串s1中的前n个子字符串s2替换成字符串s3,如果n定义为.则表示将s1中出现的所有s2都替换成s3。但是该函数不能结合正则表达式使用。 (1)regexr(s1,re,s2)函数 将正则表达式re在字符串s1中匹配到的子字符串替换为字符串s2。但是该函数不能识别元字符。 (2)ustrregexrf(s1,re,s2,[,noc])和ustrregexra(s1,re,s2,[,noc]) ustrregexrf(s1,re,s2[,noc])中的f表示first,即将正则表达式re在字符串s1中匹配到的第一个子字符串替换为s2。ustrregexra(s1,re,s2[,noc])中的a表示all,即将正则表达式re在字符串s1中匹配到的所有子字符串都替换为s2。若向noc传递一个非零数字,表示在匹配时不再区分大小写。
正则表达式 含义 [\u4e00-\u9fa5] 匹配中文字符 [^\x00-\xff] 匹配双字节字符(包括汉字在内) \n\s*\r 匹配空白行 <(\S*?)[^>]*>.*?</\1>|<.*? /> 匹配HTML标记 ^\s*|\s*$ 匹配首尾空白字符 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配Email地址 [a-zA-z]+://[^\s]* 匹配网址URL ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线) \d{3}-\d{8}|\d{4}-\d{7} 匹配国内电话号码 [1-9][0-9]{4,} 匹配腾讯QQ号(腾讯QQ号从10000开始) [1-9]\d{5}(?!\d) 匹配中国邮政编码(中国邮政编码为6位数字) \d{15}|\d{18} 匹配身份证(中国的身份证为15位或18位) \d+\.\d+\.\d+\.\d+ 匹配ip地址
标签:匹配,STATA,正则表达式,s2,s1,re,应用,字符串,函数 From: https://www.cnblogs.com/xkdn/p/17777943.html