資源描述:
《ABAP正則表達(dá)式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、正則表達(dá)式(RegularExpressions)正則表達(dá)式在其他編程語(yǔ)言中的應(yīng)用非常廣泛,網(wǎng)上資料也非常多,而網(wǎng)上在ABAP語(yǔ)言中應(yīng)用的資料卻很少,盡管各語(yǔ)言中正則表達(dá)式語(yǔ)法知識(shí)都很類似,但仍然有一些區(qū)別,本文主要是簡(jiǎn)單介紹一下其基本語(yǔ)法。總結(jié)一下,方便大家查閱。歡迎轉(zhuǎn)載,請(qǐng)注明出處,文中不足之處還望指正。(Email:hubin0809@126.com)一、簡(jiǎn)要認(rèn)識(shí)正則表達(dá)式就是用一個(gè)“字符串”來描述一個(gè)特征,然后去驗(yàn)證另一個(gè)“字符串”是否符合這個(gè)特征。比如表達(dá)式“ab+”描述的特征是“一個(gè)'a'和任意個(gè)'b'”,那么'ab','abb','abbbbbbbbbb'都符合這個(gè)特
2、征。正則表達(dá)式可以用來:(1)驗(yàn)證字符串是否符合指定特征,比如驗(yàn)證是否是合法的郵件地址。(2)用來查找字符串,從一個(gè)長(zhǎng)的文本中查找符合指定特征的字符串,比查找固定字符串更加靈活方便。(3)用來替換,比普通的替換更強(qiáng)大。舉例DATA:?matcher?TYPE?REF?TO?cl_abap_matcher,??????match???TYPE?c?LENGTH?1.matcher?=?cl_abap_matcher=>create(?pattern?????=?'w+@w+(.w+)+'???????????????????????????????????text??????
3、??=?'hubin0809@126.com'?).match?=?matcher->match(?).WRITE?match.輸出結(jié)果:X解釋:1>????'w+@w+(.w+)+'中w是表示任意一個(gè)字母或數(shù)字或下劃線,+表示前面字符個(gè)數(shù)為一個(gè)或多個(gè),@即為’@’字符2>????matcher參照類cl_abap_matcher,match有匹配的意思,調(diào)用靜態(tài)方法create創(chuàng)建了匹配的對(duì)(暫時(shí)這么理解,好吧,我承認(rèn)我不知道怎么形容),然后調(diào)用match方法,返回值中’X’表示匹配,SPACE表示不匹配。具體含義后面會(huì)講到,本程序主要是驗(yàn)證郵件地址是否合法。?二、語(yǔ)法
4、規(guī)則?pattern模板,text要匹配的字符,match匹配結(jié)果,’X’表示匹配,SPACE表示不匹配。?1、普通字符?字母、數(shù)字、漢字、下劃線、以及后面沒有特殊定義的標(biāo)點(diǎn)符號(hào),都是"普通字符"。表達(dá)式中的普通字符,在匹配一個(gè)字符串的時(shí)候,匹配與之相同的一個(gè)字符。PatternTextMatchAAXAa-AAB-ABABX?2、轉(zhuǎn)義字符?一些不便書寫的字符,采用在前面加""的方法。例如’.’表達(dá)式可匹配\代表""本身.匹配小數(shù)點(diǎn)(.)本身Q...E中間的字符作為普通字符?PatternTextMatch..f.X..ff-wdwd-\w\dwd
5、XQwdEwdX?3、能夠與'多種字符'匹配的表達(dá)式?正則表達(dá)式中的一些表示方法,可以匹配'多種字符'其中的任意一個(gè)字符。比如,表達(dá)式"d"可以匹配任意一個(gè)數(shù)字。雖然可以匹配其中任意字符,但是只能是一個(gè),不是多個(gè)。這就好比玩撲克牌時(shí)候,大小王可以代替任意一張牌,但是只能代替一張牌。(沒玩過?好吧,去玩qq夠級(jí)吧,ok,信息泄露了,承認(rèn)我是山東人)表達(dá)式可匹配d任意一個(gè)數(shù)字,0~9中的任意一個(gè)w任意一個(gè)字母或數(shù)字或下劃線,也就是A~Z,a~z,0~9,_中任意一個(gè)s包括空格、制表符、換頁(yè)符等空白字符的其中任意一個(gè).小數(shù)點(diǎn)可以匹配除了換行符()以外的任意一個(gè)字符
6、?PatternTextMatchd9Xd25-dd25XwAXsX...4zFX?4、自定義能夠與'多種字符'匹配的表達(dá)式?使用方括號(hào)[]包含一系列字符,能夠匹配其中任意一個(gè)字符。用[^]包含一系列字符,則能夠匹配其中字符之外的任意一個(gè)字符。同樣的道理,雖然可以匹配其中任意一個(gè),但是只能是一個(gè),不是多個(gè)。表達(dá)式可匹配[ab5@]匹配"a"或"b"或"5"或"@"[^abc]匹配"a","b","c"之外的任意一個(gè)字符[f-k]匹配"f"~"k"之間的任意一個(gè)字母[^A-F0-3]匹配"A"~"F","0"~"3"之外的任意一個(gè)字符?PatternTextMatch
7、[abc]aX[abc]abc-[^abc]bcb-[a-g]bcbX5、支持的POSIX字符集合?POSIX字符集合可匹配[:alnum:]任何一個(gè)字母或數(shù)字(A-Z,a-z,0-9)[:alpha:]任何一個(gè)字母(A-Z,a-z)[:cntrl:]任何一個(gè)控制字符(x00–x1F,x7F)[:digit:]任何一個(gè)數(shù)字(0–9)[:space:]任何一個(gè)空白字符(x09–x0D,x20)[:graph:]任何一個(gè)可顯示的ASCII字符,不包含空格[:l