我正在使用 SAP NetWeaver 7.5 并具有以下字符串
/InstrId/**BTXXXXXXXXX**/ /EndToEndId/REF 2102231XX4/ /BICFI/XXXXXRAAXXX/
我需要得到结果
BTXXXXXXXXX
,它也应该不超过16个字符。
我试过了
^/InstrId/(.*)/$
但是我得到 BTXXXXXXXXX/ /EndToEndId/REF 2102231XX4/ /BICFI/XXXXXRA AXXX.
显然*是贪心的,所以我尝试了
^/InstrId/(.*?)/$
,但是我得到一个表达式无效的错误。
您可以将
.*
更改为否定字符类 [^/]*
不交叉匹配 /
如果你必须匹配整行,那么你可以使用
.*
并在最后用正斜杠结束模式。
^/InstrId/([^/]*).*/$
模式匹配:
^/
匹配字符串开头的/
InstrId/
字面匹配([^/]*)
捕获组 1,匹配除 /
.*
匹配行的其余部分/$
在行尾匹配/
查看正则表达式演示。
使用这个工作
^/InstrId/([^/]{1,16}).*/$
感谢您的帮助!
$
要求匹配锚定到行尾。
你可能只是想要
^/InstrId/([^/]*)
尽可能匹配非斜线字符。
如果你想限制长度,你最多可以匹配,比如说,18个字符(假设BT前缀不应该计算在内)。
^/InstrId/([^/]{18})
如果字符串有时可能少于 18 个字符,请尝试
^/InstrId/([^/]{1,18})
如果你想要正好需要 16 位数字,可能以非数字、非斜杠字符为前缀,
^/InstrId/([^/0-9]*[0-9]{16})
也许回顾一下 Stack Overflow
regex
标签信息页面,它涵盖了一些常见的初学者问题并有更多学习资源的链接。