点击此处---> 群内免费提供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。
谁能告诉我我哪里出问题了?
谢谢。
DEMO_REGEX_TOY(查找正则表达式)并进行匹配,其工作原理相同。 将正则表达式[^。] * $应用于'DV-102.1.1',它们都返回" 1"。
您的问题仅在于SPLIT,因为SPLIT'DV-102.1.1'AT'1'INTO part1 part2给出了两个分段'DV-'和'02 .1.1'。
有很多方法可以做你想要的。 我会选择
或
Neil,
有关其他信息和准备参考。
https://help.sap.com/doc/ abapdocu_750_index_htm/7.50/zh-CN/abenregex_syntax_specials.htm
K.Kiran。
两个问题:
"。" 表示匹配一个字符。 因此找到一个真正的"。" 您必须使用反斜杠将其转义:
第二,我认为您的代码不会取代最后一个。 看起来它将使用正则表达式找到最后一个" 1",然后在替换部分匹配第一个" 1"。
正则表达式的替代选择是在最后一个"。"之前和之后进行两次匹配。 并将第二个匹配项增加1:
" 那没有道理。"
ABAP中的许多内容都没有道理:-)
我不记得原因,但是自从我第一次使用ABAP regex以来,这就是我的理解方式。
有时候事情没有意义,最简单的方法是耸耸肩膀,接受现状,继续前进。 bool vs xsdbool浮现在脑海...
哇,这引发了很多讨论,这太好了!
我调试了正则表达式玩具在做什么,并选择了REPLACE解决方案而不是SPLIT。
最后,我的代码与Sandra所建议的完全相同。
感谢大家的投入。 非常感谢。
总是逃避特殊字符是一个好习惯,但是对于值集(在[...]内部),仅以下字符\ [](据我所知) 被认为是特殊字符,需要转义。
REGEX用于验证电话格式,邮政编码格式的特定格式。 但不能替换值。
根据您的要求,将SPLIT放入表中的"。",因此最后一个点之后的数据将进入表的最后一条记录。 再将其增加1,即可将由点分隔的表中的同一组记录连接起来。
一周热门 更多>