请与正则表达式帮助

2020-09-28 06:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我对Regex非常陌生,...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我对Regex非常陌生,实际上我对ABAP完全陌生:)

我试图弄清楚为什么使用这段代码与使用Regex Toy时的结果会有所不同。

我要尝试的是替换最后一个"。"之后的数字。

我的正则表达式为[^。] * $,表示文本" DV-102.1.1"替换为2

正则表达式玩具会给我正确答案。...DV-102.1.2

使用该ABAP代码片段,但是它没有...它给了我DV-2

报告znw_regex_play。

         DATA lv_count TYPE i值1。
         数据(lv_new_wbs_no)= lv_count + 1。
         DATA(lv_val)='DV-102.1.1'。
        
 SPLIT lv_val AT匹配(val = lv_val
                        regex ='[^。] * $')放入DATA(lv_wbs_part1)DATA(lv_wbs_part2)。
     
 lv_val = lv_wbs_part1 && lv_new_wbs_no。

         写:lv_val。

 

谁能告诉我我哪里出问题了?

谢谢。

8条回答
木偶小白
2020-09-28 07:08

两个问题:

"。" 表示匹配一个字符。 因此找到一个真正的"。" 您必须使用反斜杠将其转义:

 [^ \。] * $ 

第二,我认为您的代码不会取代最后一个。 看起来它将使用正则表达式找到最后一个" 1",然后在替换部分匹配第一个" 1"。

正则表达式的替代选择是在最后一个"。"之前和之后进行两次匹配。 并将第二个匹配项增加1:

 mystr = 1.1.1.1.1。
 mystr = | {match(val = mystr regex =`。* \。`} | &&&
         | {conv i(match(val = mystr regex =`[^ \。] + $`)+ 1} |。
 "结果:1.1.1.1.2 

一周热门 更多>