“\\ d”如何在java中工作?

时间:2015-01-26 07:01:45

标签: java regex

示例:if(str.matches(".*\\d.*"))

我最近用它来检查数组的值是否包含数字。

背后的逻辑是什么?为什么.* .*在那里? \\d是什么意思?

编辑:谢谢大家!如此快速的反应:)

4 个答案:

答案 0 :(得分:2)

  • .符号匹配除换行符之外的任何字符。
  • *重复其背后的角色0次或更多次。
  • \d匹配任何数字。 \中的额外\\d用于从字符串中转义反斜杠。

所以.\\d.匹配任何单个字符,数字和任何单个字符。它符合以下条件:a1bp3k&2@

.*\\d.*匹配0个或更多字符,数字和0个或更多字符。它将符合以下条件:211123asdf6klj

如果您想匹配1个或多个字符,可以使用+{2,}{3,5}等。

+表示重复前一个字符1次或更多次。

{2, }表示重复前一个字符两次或更多次。

{3, 5}表示重复前一个字符3到5次。

有关详细信息,您可以查看许多正则表达式教程,例如:

http://www.tutorialspoint.com/java/java_regular_expressions.htm

答案 1 :(得分:1)

.*表示任何角色的序列。它匹配零eo更多的字符。

\\d表示数字

因此,您匹配包含一位数的所有字符串。有关更多信息,请参阅Pattern类的文档。

答案 2 :(得分:0)

这是一个正则表达式。

  • .表示任何字符
  • *表示[前面的匹配器]
  • 的任何数字(包括0!)
  • \\d是一个数字

所以,你把它放在一起,这个正则表达式匹配一个具有以下内容的字符串:任意数字的任意数字,然后是一个数字,然后是任意数量的任何字符。如果我们翻译这个"正式"对于更易读的人来说,它只是指一个在其中某处有数字的字符串。

答案 3 :(得分:0)

\ d表示是否有任何数字但是' \'是一个转义序列,因此使用'\\'

在C#中,您还可以使用@".*\d.*" (在Java中不确定,但我认为它应该有用)

*表示任意数量的字符。