Java正则表达式:查找一个或多个数字后跟单个特定字符的模式

12

我遇到了一个Java正则表达式的问题。

如何在字符串中查找一个或多个数字后跟单个“.”的模式?

5个回答

10
"^[\\d]+[\\.]$"

^     = start of string
[\\d] = any digit
+     = 1 or more ocurrences
\\.   = escaped dot char
$     = end of string   

8
我想这是你问题的答案:
String searchText = "asdgasdgasdg a121341234.sdg asdg as12..dg a1234.sdg ";
searchText.matches("\\d+\\.[^.]");

这个匹配模式将适用于“121341234。”和“1234。”,但不适用于“12。”。

我也在想为什么[^.]。虽然给出的答案很有帮助,但考虑到代码非常神秘,更多的解释会更好。 - JamisonMan111
@JamisonMan111 \.[^.] 基本上意味着“点后面跟除了点以外的任何字符”。[^.] 表示除了点以外的任何字符。 - ioseb

3

点号必须进行转义,否则它将匹配任何单个字符而不是 .。你应该使用 \\. - John Lawrence

1
在正则表达式中,元字符\d用于表示整数,但要在Java代码中表示为正则表达式,则必须使用\\d,因为它们会进行双重解析。
首先是字符串解析器,它将其转换为\d,然后是正则表达式解析器,它将其解释为整数元字符(这就是我们想要的)。
对于“一个或多个”部分,我们使用+贪婪量词。
要表示 . ,我们使用\\.,因为存在双重解析情况。
因此,最终我们有(\\d)+(\\.)

0

\\d+)\\.

\\d代表数字,+代表一个或多个,\\.代表点。如果在.之前没有反斜杠,则它匹配任何字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接