gpt4 book ai didi

java - 如何在java中的字符串的某些部分使用正则表达式?

转载 作者:行者123 更新时间:2023-12-01 11:18:57 25 4
gpt4 key购买 nike

我想在java字符串的某些部分使用正则表达式,

在下面的字符串中,只有 emp-id-<dynamic empID>project所有字符串保持相同。

Case1:  project/emp-id1545/ID-JHKDKHENNDHJSJ

Case 2: project/**dep**/emp-id8545/ID-GHFRDEEDE

我有时会遇到字符串 dep , temp ,或者没有像 Case 1 这样的值之后project .

如何仅过滤emp-id-<dynamic empID>从上面的字符串中,处理情况 1 和情况 2?

最佳答案

有多种方法可以完成此任务

正则表达式

模式

"emp-id\\d+"

应该达到您对这两种情况的期望。该模式匹配“emp-id”加上 1 个或多个数字 (\\d+)。

public static void main(String[] args) throws Exception {
String case1 = "project/emp-id1545/ID-JHKDKHENNDHJSJ";
String case2 = "project/**dep**/emp-id8545/ID-GHFRDEEDE";

Matcher matcher = Pattern.compile("emp-id\\d+").matcher(case1);
// Changed from while to if cause we're only going to get the first match
if (matcher.find()) {
System.out.println(matcher.group());
}

matcher = Pattern.compile("emp-id\\d+").matcher(case2);
// Changed from while to if cause we're only going to get the first match
if (matcher.find()) {
System.out.println(matcher.group());
}
}

结果:

emp-id1545
emp-id8545

Java 8

鉴于您的数据表明字符“/”是分隔符。您还可以使用 String.split()Stream.filter() (Java 8) 来查找字符串。

public static void main(String[] args) throws Exception {
String case1 = "project/emp-id1545/ID-JHKDKHENNDHJSJ";
String case2 = "project/**dep**/emp-id8545/ID-GHFRDEEDE";

System.out.println(Arrays.stream(case1.split("/")).filter(s -> s.startsWith("emp-id")).findFirst().get());
System.out.println(Arrays.stream(case2.split("/")).filter(s -> s.startsWith("emp-id")).findFirst().get());
}

结果:

emp-id1545
emp-id8545

非正则表达式或 Java 8

仍然使用“/”分隔符和“emp-id”,您可以使用String.indexOf()String.substring()来提取您想要的字符串寻找。

public static void main(String[] args) throws Exception {
String case1 = "project/emp-id1545/ID-JHKDKHENNDHJSJ";
String case2 = "project/**dep**/emp-id8545/ID-GHFRDEEDE";

int index = case1.indexOf("emp-id");
System.out.println(case1.substring(index, case1.indexOf("/", index)));

index = case2.indexOf("emp-id");
System.out.println(case2.substring(index, case2.indexOf("/", index)));
}

结果:

emp-id1545
emp-id8545

关于java - 如何在java中的字符串的某些部分使用正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com