gpt4 book ai didi

java - 如何在java中只找到精确的模式匹配?

转载 作者:行者123 更新时间:2023-11-30 01:50:22 26 4
gpt4 key购买 nike

字符串“description”同时具有 5 位和 7 位子字符串。我只想将 5digit、7digit 分别与 5digit、7digit 匹配。但是,5 位子字符串会提取整个 5 位数字字符串和 7 位数字的前 5 位数字。

Pattern 5digitPattern = Pattern.compile("([0-9]{5})");
Pattern 7digitPattern = Pattern.compile("([0-9]{7})");

Matcher 5digitMatcher = 5digitPattern.matcher(description);
Matcher 7digitMatcher = 7digitPattern.matcher(description);

if (5digitMatcher.find()) {
for (int i = 0; i < 5digitMatcher.groupCount(); i++) {
System.out.print("\t" + 5digitMatcher.group(i));
}
}

if (7digitMatcher.find()) {
for (int i = 0; i < 7digitMatcher.groupCount(); i++) {
System.out.print("\t" + 7digitMatcher.group(i));
}
}

请帮我将 5 位、7 位分别与 5 位、7 位进行匹配。

最佳答案

使用字边界:

Pattern 5digitPattern = Pattern.compile("\\b([0-9]{5})\\b");
Pattern 7digitPattern = Pattern.compile("\\b([0-9]{7})\\b");

根据评论,如果要匹配abc12345def中的数字,请使用否定查找:

Pattern 5digitPattern = Pattern.compile("(?<![0-9])([0-9]{5})(?![0-9])");
Pattern 7digitPattern = Pattern.compile("(?<![0-9])([0-9]{7})(?![0-9])");

关于java - 如何在java中只找到精确的模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56296534/

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