ora00936缺失表达式怎么解决_正则表达式替换函数
導讀
在上篇推文《正則表達式匹配和提取函數》中簡單介紹了正則表達式的匹配和提取函數,并用一些簡單的例子向大家說明如何利用正則表達式匹配和提取文本。今天我們為大家簡單介紹一下正則表達式的替換函數,并舉例說明正則表達式替換函數的應用。正則表達式之替換函數
正則表達式中的替換函數有兩種類型:ustrregexrf(s1,re,s2[,noc])ustrregexra(s1,re,s2[,noc])其中r代表replace,即替換;f代表first,a代表all。兩個函數分別代表將正則表達式re在字符串s1中匹配到的所有子字符串中的第一個和全部替換為字符串s2。在默認情況下,匹配是區分大小寫的,但是如果定義noc為一個不為零的數,則匹配時不區分大小寫。
以下是幾個簡單的例子:
dis?ustrregexrf("ABab","ab","X")?//表示將ab替換成xdis ustrregexrf("ABab","Ab","X") //沒有匹配到Ab,因此沒有發生替換 dis ustrregexrf("ABab","Ab","X",0) //在區分大小寫的情況下,沒有匹配到Ab,因此不發生替換dis?ustrregexrf("ABab","Ab","X",1)?//在不區分大小寫的情況下,Ab既可以匹配到AB也可以匹配到ab,f表示將匹配到的第一個子字符串替換,即替換了Adis?ustrregexra("ABab","Ab","X",1)?//在不區分大小寫的情況下,Ab既可以匹配到AB也可以匹配到ab,a表示將匹配到的所有子字符串替換,即替換成了XX對于復雜一些的問題,處理過程也要復雜一些。比如在處理從網上找到的英文名字的時候,我們可能會發現多個英文名字連接在一起,這時我們就可以嘗試用正則表達式的替換函數解決問題,接下來為大家舉例說明。
一、用input命令讀入觀測值
clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endlist如第一行觀測值“Jeb SpencerSteven Hamerslag”,事實上包括了兩個英文姓名“Jeb Spencer”和“Steven Hamerslag”。我們需要將這行觀測值拆分為兩個姓名。
二、使用正則表達式的替換函數進行姓名拆分
通過觀察,我們發現連接在一起的英文姓名特征為小寫字母加大寫字母。例如在第一行觀測值中,第一個姓名最后一個字符為小寫字母“r”,第二個姓名第一個字符為大寫字母“S”,那么“rS”就是兩個姓名連在一起的特征。所以我們嘗試將相連的小寫字母在前,大寫字母在后的內容分開并在中間加上分號。
replace?partners?=?ustrregexra(partners,?"([a-z])([A-Z])",?"$1;$2")list其中[a-z]表示所有小寫字母,[A-Z]表示所有大寫字母。以第一行觀測值為例,”([a-z])([A-Z])“的匹配結果為”rS“,”$1“表示第一個子表達式匹配到的內容,即”r“,”$2“表示第二個子表達式匹配到的內容,即”S“;那么”$1;$2“則表示”r;S“。因此就實現了在兩個姓名之間加入分隔符”;“。如上圖所示。
三、整理
名字完成拆分之后,需要用split命令對變量進行分隔。
split partners,p(;)如上圖所示,partners1-partners4即為分隔后的結果,接下來我們用stack命令將這四個變量堆到一個變量下,并刪除缺失值。stack partners1 - partners4, into(partners) cleardrop if partners == ""drop _stack如上圖所示,我們完成了對這些英文姓名的拆分。
完整命令如下:
clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endreplace partners = ustrregexra(partners, "([a-z])([A-Z])", "$1;$2")split partners,p(;)stack partners1 - partners4, into(partners) cleardrop if partners == ""drop?_stack以上就是本篇文章對正則表達式替換函數的簡單介紹啦!上篇推文和本篇推文已經介紹了正則表達式的匹配、提取和替換函數。正則表達式作為一種強大、便捷、高效的文本處理工具,大家可以多多進行了解。總結
以上是生活随笔為你收集整理的ora00936缺失表达式怎么解决_正则表达式替换函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中文开发环境_Eclipse
- 下一篇: eclipse svn插件安装_Visu