如何使用正则命名组捕获不同可选位置的目标字符
正则匹配方案
要实现不同位置的字符捕获到同一个命名组,直接用分支结构匹配两种位置模式,两个分支内定义同名命名捕获组即可,绝大多数现代正则引擎(Python 3.10+、Java 9+、.NET、JavaScript ES2018+等)都支持该写法。
可用正则模式如下:
^(?<target>[xyz])-test$|^test-(?<target>t)$
匹配效果验证
针对给出的4条测试字符串,捕获结果如下:
- 匹配
x-test时,命名组target捕获值为x - 匹配
y-test时,命名组target捕获值为y - 匹配
z-test时,命名组target捕获值为z - 匹配
test-t时,命名组target捕获值为t
扩展说明
如果后续需要匹配更多前缀/后缀字符,直接修改对应分支的匹配规则即可:
- 要新增前缀匹配字符,直接修改第一个分支内
[xyz]字符集的内容 - 要新增后缀匹配字符,直接修改第二个分支内
t对应的匹配规则
内容的提问来源于stack exchange,提问作者Umut KIRGÖZ
相关产品推荐
相关产品推荐

