SAP 7.5 中的 RegEx 以第一次出现字符开始和结束

问题描述 投票:0回答:3

我正在使用 SAP NetWeaver 7.5 并具有以下字符串

/InstrId/**BTXXXXXXXXX**/ /EndToEndId/REF 2102231XX4/ /BICFI/XXXXXRAAXXX/

我需要得到结果

BTXXXXXXXXX
,它也应该不超过16个字符。

我试过了

^/InstrId/(.*)/$

但是我得到 BTXXXXXXXXX/ /EndToEndId/REF 2102231XX4/ /BICFI/XXXXXRA AXXX.

显然*是贪心的,所以我尝试了

^/InstrId/(.*?)/$
,但是我得到一个表达式无效的错误。

regex regex-greedy netweaver
3个回答
0
投票

您可以将

.*
更改为否定字符类
[^/]*
不交叉匹配
/

如果你必须匹配整行,那么你可以使用

.*
并在最后用正斜杠结束模式。

^/InstrId/([^/]*).*/$

模式匹配:

  • ^/
    匹配字符串开头的
    /
  • InstrId/
    字面匹配
  • ([^/]*)
    捕获组 1,匹配除
    /
  • 以外的可选字符
  • .*
    匹配行的其余部分
  • /$
    在行尾匹配
    /

查看正则表达式演示


0
投票

使用这个工作

^/InstrId/([^/]{1,16}).*/$

感谢您的帮助!


0
投票

$
要求匹配锚定到行尾。

你可能只是想要

^/InstrId/([^/]*)

尽可能匹配非斜线字符。

如果你想限制长度,你最多可以匹配,比如说,18个字符(假设BT前缀不应该计算在内)。

^/InstrId/([^/]{18})

如果字符串有时可能少于 18 个字符,请尝试

^/InstrId/([^/]{1,18})

如果你想要正好需要 16 位数字,可能以非数字、非斜杠字符为前缀,

^/InstrId/([^/0-9]*[0-9]{16})

也许回顾一下 Stack Overflow

regex
标签信息页面,它涵盖了一些常见的初学者问题并有更多学习资源的链接。

© www.soinside.com 2019 - 2024. All rights reserved.