日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

使用ABAP正则表达式解析HTML标签

發(fā)布時間:2023/12/19 HTML 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用ABAP正则表达式解析HTML标签 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需求就是我用ABAP的某個函數(shù)從數(shù)據(jù)庫讀取一個字符串出來,該字符串的內(nèi)容是一個網(wǎng)頁。

網(wǎng)頁的form里包含了很多隱藏的input field。我的任務是解析出name為svyValueGuid的input field的值:FA163EEF573D1ED89E89C7FE5E7C4715

最簡單粗暴的做法是:利用ABAP的FIND FIRST OCCURRENCE關(guān)鍵字首先找到svyValueGuid的偏移量,然后從這個偏移量出發(fā),再找到第一個>的偏移量,這樣問題就化簡為在子串type=“hidden” value=“FA163EEF573D1ED89E89C7FE5E7C4715”,這樣問題就簡單多了。但是這種辦法比較笨重,代碼很冗余。

有沒有更快捷的辦法呢?那就是使用ABAP regular expression,即正則表達式。

請看下列的測試代碼:

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é)果:

解決問題的核心思路是這個正則表達式:*.svyValueGuid(?:.)value="(.)">.SurveyId.

通過捕獲分組操作符,一對小括號,將32位的GUID值進行捕獲。這種解法比FIND FIRST OCCURANCE的代碼量要少。

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請關(guān)注公眾號"汪子熙"或者掃描下面二維碼:

總結(jié)

以上是生活随笔為你收集整理的使用ABAP正则表达式解析HTML标签的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。