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



我正在SAP NetWeaver 7.5上工作,并拥有以下字符串

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

我需要得到结果BTXXXXXXXXX,也应该不超过16个字符。

我试过^/InstrId/(.*)/$

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

显然*是贪婪的,所以我尝试^/InstrId/(.*?)/$,但我得到一个错误,表达式是无效的。

$要求将匹配锚定到行尾。

你可能只需要

^/InstrId/([^/]*)

匹配尽可能多的非斜杠字符。

如果你想限制长度,你可以匹配16个非斜杠字符:

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

如果字符串有时可能小于16个字符,请尝试

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

匹配尽可能多的字符,最多16个。

如果您想要恰好16位数字,可能使用非数字、非斜杠字符作为前缀,

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

也许可以查看堆栈溢出regex标签信息页面,该页面涵盖了一些常见的初学者问题,并提供了更多学习资源的链接。

您可以将.*更改为不交叉匹配/的否定字符类[^/]*

如果你必须匹配整行,那么你可以使用.*,并以一个正斜杠结束模式。

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

模式匹配:

  • ^/在字符串
  • 开头匹配/
  • InstrId/Match字面意思
  • ([^/]{1,16})捕获组1,匹配除/以外的1-16个字符
  • .*匹配剩下的行
  • /$在行末匹配/

查看正则表达式演示

相关内容

  • 没有找到相关文章

最新更新