用于在字符串中查找整数的正则表达式

2022-09-02 02:36:06

我想在Java中使用正则表达式。

我想做的是找到字符串中的第一个整数。

例:

String = "the 14 dogs ate 12 bones"

会再来14。

String = "djakld;asjl14ajdka;sdj"

还会再来14。

这就是我到目前为止所拥有的。

Pattern intsOnly = Pattern.compile("\\d*");
Matcher makeMatch = intsOnly.matcher("dadsad14 dssaf jfdkasl;fj");
makeMatch.find();
String inputInt = makeMatch.group();
System.out.println(inputInt);

我做错了什么?


答案 1

您要求输入 0 位或更多位数字。您需要要求1个或更多:

"\\d+"

答案 2

看起来其他解决方案无法处理,并且支持这种情况,所以我将着手解决问题。我对正则表达式有些缺乏经验,所以我可能犯了一些错误,使用了Java的正则表达式解析器不支持的东西,或者使它过于复杂,但这些语句似乎在Kiki 0.5.6中起作用。+/-2e3java.lang.Integer.parseInt(String)

所有正则表达式都以用于读取的未转义格式和可在 Java 中用作字符串文本的转义格式提供。

要从字符串中获取字节、短整型、整型或长整型::

unescaped: ([\+-]?\d+)([eE][\+-]?\d+)?
  escaped: ([\\+-]?\\d+)([eE][\\+-]?\\d+)?

...和奖励积分...

从字符串中获取双精度值或浮点数:

unescaped: ([\+-]?\d(\.\d*)?|\.\d+)([eE][\+-]?(\d(\.\d*)?|\.\d+))?
  escaped: ([\\+-]?\\d(\\.\\d*)?|\\.\d+)([eE][\\+-]?(\\d(\\.\\d*)?|\\.\\d+))?