小編給大家分享一下如何使用ABAP正則表達(dá)式解析HTML標(biāo)簽,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的東昌網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!需求就是我用ABAP的某個函數(shù)從數(shù)據(jù)庫讀取一個字符串出來,該字符串的內(nèi)容是一個網(wǎng)頁。
網(wǎng)頁的form里包含了很多隱藏的input field。我的任務(wù)是解析出name為svyValueGuid的input field的值:FA163EEF573D1ED89E89C7FE5E7C4715
最簡單粗暴的做法是:利用ABAP的FIND FIRST OCCURRENCE關(guān)鍵字首先找到svyValueGuid的偏移量,然后從這個偏移量出發(fā),再找到第一個>的偏移量,這樣問題就化簡為在子串type="hidden" value="FA163EEF573D1ED89E89C7FE5E7C4715",這樣問題就簡單多了。但是這種辦法比較笨重,代碼很冗余。
有沒有更快捷的辦法呢?那就是使用ABAP regular expression,即正則表達(dá)式。
請看下列的測試代碼:
REPORT ztest_interface. DATA: lv_input TYPE string, reg_pattern TYPE string. lv_input = `<body>` && `<div class="Title">Jerry's Programming Skill survey</div>` && `<form action="Survey.htm?sap-client=001">` && `<input name="svyApplicationId" type="hidden" value="CRM_SURVEY_ACTIVITY">` && `<input name="svyValueGuid" type="hidden" value="FA163EEF573D1ED89E89C7FE5E7C4715">` && `<input name="SurveyId" type="hidden" value="JERRY_TEST">` && `<div Id="" class="Section1">` && `</form></body>`. reg_pattern = '.*svyValueGuid(?:.*)value="(.*)">.*SurveyId.*'. TRY. DATA(lo_regex) = NEW cl_abap_regex( pattern = reg_pattern ). DATA(lo_matcher) = lo_regex->create_matcher( EXPORTING text = lv_input ). IF lo_matcher->match( ) <> abap_true. WRITE:/ 'fail in input scan!'. RETURN. ENDIF. DATA(lt_reg_match_result) = lo_matcher->find_all( ). READ TABLE lt_reg_match_result ASSIGNING FIELD-SYMBOL(<match>) INDEX 1. READ TABLE <match>-submatches ASSIGNING FIELD-SYMBOL(<sub>) INDEX 1. data(lv_sub) = lv_input+<sub>-offset(<sub>-length). WRITE:/ 'result: ', lv_sub. CATCH cx_root INTO DATA(cx_root). WRITE:/ cx_root->get_text( ). RETURN. ENDTRY.
執(zhí)行結(jié)果:
解決問題的核心思路是這個正則表達(dá)式:.svyValueGuid(?:.)value="(.)">.SurveyId.***
通過捕獲分組操作符,一對小括號,將32位的GUID值進(jìn)行捕獲。這種解法比FIND FIRST OCCURANCE的代碼量要少。
看完了這篇文章,相信你對“如何使用ABAP正則表達(dá)式解析HTML標(biāo)簽”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
當(dāng)前名稱:如何使用ABAP正則表達(dá)式解析HTML標(biāo)簽-創(chuàng)新互聯(lián)
文章位置:http://bm7419.com/article20/ddphco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、軟件開發(fā)、面包屑導(dǎo)航、小程序開發(fā)、網(wǎng)站內(nèi)鏈、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容