regex - 用正则表达式替换字符串末尾的%?

标签 regex abap

我想删除某些文本末尾的"%"。我想使用正则表达式来完成此操作,因为 ABAP 不容易处理字符串末尾的文本。

DATA lv_vtext TYPE c LENGTH 10 VALUE 'TEST %'.
REPLACE REGEX ' %$' IN lv_vtext WITH ''.

但它并不能取代任何东西。当我省略 "$" 时,文本将按预期删除,但我担心它可能会发现比想要的更多的出现次数。

我尝试使用 \z\Z 而不是 $,但无济于事。

最佳答案

这个答案是关于没有 REGEX 的替代方法。 POSIX正则表达式相当慢,而且有些人不愿意使用它,所以如果你没有完全关闭在正常的ABAP中这样做:

lv_vtext = COND #( WHEN contains( val = lv_vtext end = ` %` ) 
           THEN substring( val = lv_vtext len = strlen( lv_vtext ) - 2 )
           ELSE lv_vtext ).

带有上下文的代码:

DATA(lv_vtext) = `test %`.
lv_vtext = COND #( WHEN contains( val = lv_vtext end = ` %` ) 
           THEN substring( val = lv_vtext len = strlen( lv_vtext ) - 2 )
           ELSE lv_vtext ).
ASSERT lv_vtext = `test`.

关于regex - 用正则表达式替换字符串末尾的%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461933/

相关文章:

java - 如何将 Java 中的字符串拆分为不同大小的部分?

javascript - 在 Javascript 中使用正则表达式验证输入

用于匹配美元金额的 Java 正则表达式

abap - 如何在 ABAP OO 中对 "Select, Map, Save to local file"报告建模?

javascript - 检查号码是否符合特定格式

Java 链接正则表达式

abap - 更新数据库记录时where子句出现问题

abap - 如何增加 UI 中选择选项的长度

parameters - 将 SELECT-OPTIONS 表作为参数传递给子例程?

import - 手动功能模块传输到另一个系统现有功能组?