abap查找字符串中最后一次出现的字符(正则匹配)

如何查找字符串中某字符最后一次出现的位置呢,可使用find语句,abap中可使用正则表达式Regex的语句就只有find以及replace语句了。

以下代码块表示了如何操作:

DATA: text TYPE char100,
      moff TYPE i,
      mlen TYPE i,
      mcnt TYPE i.
text = '123A45A678'.

WRITE: / '转换前:',text.
FIND ALL OCCURRENCES OF 'A'
     IN text
       MATCH OFFSET moff     "最后一次出现位置
       MATCH LENGTH mlen   "匹配字符长度
       MATCH COUNT  mcnt.  " 计数匹配次数

WRITE: /  '出现位置和长度:',moff,mlen.

 "可进一步做替换处理
REPLACE  'A' IN
SECTION OFFSET  moff LENGTH mlen OF
text WITH 'B'.

WRITE: / '转换后:',text.

在这里插入图片描述

下面是复杂的正则表达式匹配例子:

DATA text TYPE string.
DATA result_tab TYPE match_result_tab WITH HEADER LINE.

text = 'Shalalala!'.

"匹配la,并且la之后必须是!   (?:...)表示非捕获组(分组,但不捕获);()表示捕获组(分组)

FIND ALL OCCURRENCES OF REGEX '(?:la)(?=!)'   
     IN text RESULTS result_tab[].

LOOP AT result_tab .
  WRITE: / result_tab-offset, result_tab-length.
ENDLOOP.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值