java—在出现第三个/之前如何选择字符范围,如果没有第三个/则如何使用正则表达式选择所有字符

mwg9r5ms  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(259)

我需要在一个字符串中选择一个范围直到第三个 / 存在。
我现在有 ^([^\/]*\/[^\/]*\/[^\/]*\/ 但这只会在超过3的时候起作用 / 在字符串中。理想情况下,我需要选择所有字符直到第三个 / ,如果没有第三个,则选择“全部” / 如果有人能想出解决这个问题的办法那就太好了。
谢谢!

drkbr07n

drkbr07n1#

简单,但有点低效的方法是:

String input = "your/input/should/be/there";
        String[] parts = input.split("/");
        if (parts.length > 2) {
            return String.join("/", parts[0], parts[1], parts[2]);
        } else {
            return input;
        }
kx1ctssn

kx1ctssn2#

匹配从第三次出现的子串 / 可能少于3个 / s您可以使用范围量词使用此正则表达式:

^(?:[^/]*/){0,3}

正则表达式演示
工作原理: ^ 我们从一行的开头开始
我们用的是贪婪的量词 {0,3} 匹配前一组0到3次
在组中,我们匹配0个或更多不匹配的字符 / 接着是一个 /

相关问题