繁体   English   中英

如何在Java中使用正则表达式在给定单词之后提取Java中的单词

[英]How to extract a word in java after a given word in using regex in java

我正在尝试在给定单词之后提取单词。 例如:如果我的字符串是“ http:// localhost:8080 / api / rest / loan / application / 1007 / applicant / 951 / pan ”,那么我想提取application之后出现的单词(假设应用程序仅出现一次在字符串中)。

在这种情况下,我想提取1007。目前,我已经使用Java尝试过此操作

(.*?^)(.*?)application/[0-9]*

这给我的输出为http://localhost:8080/api/rest/loan/application/1007 但是我只想输出1007。

您可以使用正则表达式来确保匹配的文本在application/之前使用此正则表达式,

(?<=application/)[^/]+

在这里, [^/]+部分将捕获/以外的任何文本,从而为您提供所需的文本1007

正则表达式演示

Java代码

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("(?<=application/)[^/]+");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group());
}

打印,

1007

完成同一任务的另一种更简便,更高效的方法是使用以下分组模式,

/application/([^/]+)

并捕获group1的内容。

带分组模式的正则表达式演示

请注意,由于某些方言有时不支持环顾四周,因此速度更快,并且可以广泛使用。

Java代码

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("/application/([^/]+)");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
}

打印,

1007 

怎么样

    String a = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
    a = a.replaceAll("(.*?^)(.*?)application/", "");
    String[] b = a.split("/");
    System.out.println(b[0]);

字符串replace函数将精确的字符串作为输入,而replaceAll将正则表达式作为输入参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM