如何编写可识别含斜杠的精确事务码模式的正则表达式
正则精确匹配含斜杠事务码(Tcode)的解决方案
问题根因
\b是正则内置的单词边界,仅匹配\w(字母、数字、下划线)与\W(非上述字符)的交界位置。由于/属于非单词字符,若带斜杠事务码的前后是空白、标点、字符串首尾这类非\w内容,两者之间不会形成单词边界,因此\b\/ROR23\/TRP2\/HH34\b这类规则无法命中目标。
通用解决方案
用自定义否定环视边界替代内置的\b,可同时兼容普通无斜杠事务码、含斜杠自定义事务码的精确匹配需求,规则如下:
(?<![a-zA-Z0-9_]){你的事务码}(?![a-zA-Z0-9_])
规则说明
(?<![a-zA-Z0-9_]):否定逆序环视,要求事务码的前一个字符不能是字母、数字、下划线(?![a-zA-Z0-9_]):否定顺序环视,要求事务码的后一个字符不能是字母、数字、下划线
示例
匹配含斜杠事务码/ROR23/TRP2/HH34的正则为:
(?<![a-zA-Z0-9_])\/ROR23\/TRP2\/HH34(?![a-zA-Z0-9_])
匹配效果
- 可正常命中:
/ROR23/TRP2/HH34、当前事务码:/ROR23/TRP2/HH34、[/ROR23/TRP2/HH34]等合法场景 - 不会误匹配:
/ROR23/TRP2、1/ROR23/TRP2/HH34、/ROR23/TRP2/HH34_1等前缀、前后带多余字符的场景
简化规则
如果你的业务场景中事务码本身不会包含下划线,可删除规则中的_判断,简化为:
(?<![a-zA-Z0-9]){你的事务码}(?![a-zA-Z0-9])
该规则对普通无斜杠事务码也完全适用,无需单独维护两套匹配逻辑。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

