如何修改正则表达式以实现URL的预期分组匹配结果
修改后的正则表达式及说明
直接给出满足需求的正则表达式:
(.*)/app/([^/]+)/([^/]+)/(.*)/c/XYZ(/)?
核心调整逻辑:
- 将原正则中
/app/后的前两个捕获组从(.*)替换为([^/]+):[^/]+表示匹配不含斜杠的连续字符,能精准捕获单个语言代码(如de、en),彻底避免原正则因贪婪匹配导致的跨斜杠内容(比如de/en)。
- 保留最后一个捕获组的
(.*):- 这个贪婪匹配会捕获从第三个斜杠后到
/c/XYZ之前的所有内容,无论中间有多少个斜杠分隔的分段(比如seg1/seg2或seg1/seg2/seg3/seg4都会完整归入Group4)。
- 这个贪婪匹配会捕获从第三个斜杠后到
匹配结果验证:
针对示例URL https://my.example.com/app/de/en/seg1/seg2/c/XYZ,分组结果为:
- Group1:
https://my.example.com - Group2:
de - Group3:
en - Group4:
seg1/seg2
对于包含更多分段的URL(如https://my.example.com/app/de/en/seg1/seg2/seg3/seg4/c/XYZ),Group4会捕获seg1/seg2/seg3/seg4,完全符合需求。
内容的提问来源于stack exchange,提问作者AfiFi
相关产品推荐
相关产品推荐

