[英]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.