首页 > 解决方案 > 如何从句子中提取子字符串直到分隔符

问题描述

嗨,我有一些这样的字符串:

location/city/home-a-berlin?/someNewAdress

我想提取放在“-a-”和“?”之间的单词柏林。我怎么能用java中的正则表达式做到这一点?

我可以通过使用字符串 API 来做到这一点,但有点坚持使用正则表达式。

String cityName = url.substring(url.lastIndexOf("-a-")+3, url.indexOf('?')) //berlin

标签: javaregex

解决方案


您可以使用具有否定字符类的捕获组。

-a-([^\?]+)\?

正则表达式演示| Java 演示

在 Java 中:

String regex = "-a-([^\\?]+)\\?";
String string = "location/city/home-a-berlin?/someNewAdress\n";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);

if (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出

berlin

推荐阅读