gpt4 book ai didi

java - 使用模式和匹配器查找数字

转载 作者:行者123 更新时间:2023-11-30 03:54:10 25 4
gpt4 key购买 nike

我正在尝试使用 Pattern 和 Matcher 来确定给定的字符串是否在 2 位数字之间有空格。例如,“5 1”应返回 true,“51”应返回 false。起初我将 string.replaceAll 与正则表达式一起使用,效果很好,但转向 Pattern 我似乎无法让它工作。

    String findDigit = "5      1/3";
String regex = "(\\d) +(\\d)";
findDigit = findDigit.replaceAll(regex, "$1 $2");

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(findDigit);
System.out.println(m.matches());
System.out.println(m.hitEnd());

我首先是从这个开始的。 ReplaceAll 可以正常工作并删除多余的空格,但 m.matches 和 m.hitEnd 都返回 false。然后我认为我可能做错了什么,所以我将情况简化为

    String findDigit = "5";
String regex = "\\d";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(findDigit);
System.out.println(m.matches());
System.out.println(m.hitEnd());

并且匹配返回true(显然)但是当我将其更改为这个时

    String findDigit = "5 3";
String regex = "\\d";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(findDigit);
System.out.println(m.matches());
System.out.println(m.hitEnd());

返回的结果都是 false。所以我想我的主要问题是如何首先确定我的字符串中是否有任何数字,然后更具体地说,如何确定我的字符串中是否有数字空格数字。我以为那是 hitEnd,但我想我错了。提前致谢。

最佳答案

如果您正在寻找具有多个空格的匹配项,但希望保留输出的格式,您可以使用组和反向引用。

例如:

String input = "blah 5             6/7";
Pattern p = Pattern.compile("(\\d)\\s+(\\d)");
Matcher m = p.matcher(input);
while (m.find()) {
System.out.printf("Whole match: %s\n\tFirst digit: %s\n\tSecond digit: %s\n", m.group(), m.group(1), m.group(2));
}

输出

Whole match: 5             6
First digit: 5
Second digit: 6

关于java - 使用模式和匹配器查找数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683313/

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