【发布时间】:2017-10-29 08:41:35
【问题描述】:
我有以下部分 URL,可以是
/it/xyz/test/param+1/param-2/1234/gfd4
基本上两个字母开头一个斜线另一个未知字符串,然后是斜线之间的一系列可重复字符串 我需要捕获每个字符串(我知道用 / 分隔符分割会很好,但我很想知道如何用正则表达式提取)。我首先提出了这个:
^\/([a-zA-Z]{2})\/([a-zA-Z]{1,10})(\/[a-zA-Z1-9\+\-]+)
但它只捕获
group1: 它 组2:xyz 第三组:/测试
当然它会忽略字符串的其余部分。
如果我在末尾添加 * 号,它只会捕获最后一句话:
^\/([a-zA-Z]{2})\/([a-zA-Z]{1,10})(\/[a-zA-Z1-9\+\-]+)*
group1: 它 组2:xyz 组3:/gfd4
所以,我显然遗漏了一些基础知识,所以除了正确的正则表达式之外,我还想解释一下。
我标记为 Java 是因为解析正则表达式的引擎是 JDK 7。据我所知,每个引擎都可能存在差异。
【问题讨论】: