如何使用ABAP正则表达式解析HTML标签
如何使用ABAP正则表达式解析HTML标签
小编给大家分享一下如何使用ABAP正则表达式解析HTML标签,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
需求就是我用ABAP的某个函数从数据库读取一个字符串出来,该字符串的内容是一个网页。
网页的form里包含了很多隐藏的input field。我的任务是解析出name为svyValueGuid的input field的值:FA163EEF573D1ED89E89C7FE5E7C4715
最简单粗暴的做法是:利用ABAP的FIND FIRST OCCURRENCE关键字首先找到svyValueGuid的偏移量,然后从这个偏移量出发,再找到第一个>的偏移量,这样问题就化简为在子串type="hidden" value="FA163EEF573D1ED89E89C7FE5E7C4715",这样问题就简单多了。但是这种办法比较笨重,代码很冗余。
有没有更快捷的办法呢?那就是使用ABAP regular expression,即正则表达式。
请看下列的测试代码:
REPORTztest_interface.DATA:lv_inputTYPEstring,reg_patternTYPEstring.lv_input=`<body>`&&`<divclass="Title">Jerry'sProgrammingSkillsurvey</div>`&&`<formaction="Survey.htm?sap-client=001">`&&`<inputname="svyApplicationId"type="hidden"value="CRM_SURVEY_ACTIVITY">`&&`<inputname="svyValueGuid"type="hidden"value="FA163EEF573D1ED89E89C7FE5E7C4715">`&&`<inputname="SurveyId"type="hidden"value="JERRY_TEST">`&&`<divId=""class="Section1">`&&`</form></body>`.reg_pattern='.*svyValueGuid(?:.*)value="(.*)">.*SurveyId.*'.TRY.DATA(lo_regex)=NEWcl_abap_regex(pattern=reg_pattern).DATA(lo_matcher)=lo_regex->create_matcher(EXPORTINGtext=lv_input).IFlo_matcher->match()<>abap_true.WRITE:/'failininputscan!'.RETURN.ENDIF.DATA(lt_reg_match_result)=lo_matcher->find_all().READTABLElt_reg_match_resultASSIGNINGFIELD-SYMBOL(<match>)INDEX1.READTABLE<match>-submatchesASSIGNINGFIELD-SYMBOL(<sub>)INDEX1.data(lv_sub)=lv_input+<sub>-offset(<sub>-length).WRITE:/'result:',lv_sub.CATCHcx_rootINTODATA(cx_root).WRITE:/cx_root->get_text().RETURN.ENDTRY.
执行结果:
解决问题的核心思路是这个正则表达式:.svyValueGuid(?:.)value="(.)">.SurveyId.***
通过捕获分组操作符,一对小括号,将32位的GUID值进行捕获。这种解法比FIND FIRST OCCURANCE的代码量要少。
看完了这篇文章,相信你对“如何使用ABAP正则表达式解析HTML标签”有了一定的了解,如果想了解更多相关知识,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
html简介(超文本标记语言)
背景知识HTML与W3C(WorldWideWeb:www)的关系,HTML规范是由w3c负责制定的,W...
-
css边框属性如何设置(html button如何设置圆角边框颜色)
htmlbutton如何设置圆角边框颜色?在HTML中把块的边框可以做成圆角需要利用css的border-radius属性。cs...
-
怎么通过HTML的表单向服务器发送数据
怎么通过HTML的表单向服务器发送数据本篇内容介绍了“怎么通过HT...
-
HTML怎么实现文件下载对话框
HTML怎么实现文件下载对话框本篇内容介绍了“HTML怎么实现文件...
-
html页面中的单选框功能如何实现
html页面中的单选框功能如何实现本文小编为大家详细介绍“html...
-
可视化html文件怎么修改支持PDF导出
可视化html文件怎么修改支持PDF导出这篇文章主要介绍“可视化h...
-
HTML怎么链接音频文件
HTML怎么链接音频文件本文小编为大家详细介绍“HTML怎么链接音...
-
HTML表单文件选择框样式怎么自定义
HTML表单文件选择框样式怎么自定义本篇内容主要讲解“HTML表单...
-
HTML怎么使用注释来阻止执行
HTML怎么使用注释来阻止执行这篇文章主要介绍“HTML怎么使用注...
-
HTML后代选择器的功能怎么用
HTML后代选择器的功能怎么用本文小编为大家详细介绍“HTML后代...