Pattern p2 = Pattern.compile(".*");
Matcher m2 = p2.matcher("true");
System.out.println(m2.matches() + " [" + m2.group() + "]");
当我使用上面的代码时,它没问题。但是当我使用这个regexpr [.]*
时,我不明白发生了什么。它会打印false
。
如何将点作为特定符号?或者如何使用没有\ n和\ r?
的任何字符创建一类符号答案 0 :(得分:7)
但是当我使用这个regexpr [。] *时,我不明白发生了什么。它说我是假的。
因为在character class内,点失去了它的特殊含义,并且会匹配一个普通的旧点(.
字符)。
在字符类之外,点是与任何字符匹配的元字符,不包括换行符(当然,除非使用Pattern.DOTALL
修饰符)。
或者如何使用没有\ n和\ r。
的任何字符制作一类符号
使用否定的字符类:
Pattern p2 = Pattern.compile("[^\\r\n]*");
[^\r\n]
表示“匹配任何不 \r
或\n
的内容。
答案 1 :(得分:3)
.*
表示任何字符为0次或更多次
[.]*
表示点字符数为0或更多次
答案 2 :(得分:2)
[]
是角色类,其中大多数代表它们的实际符号。在这种情况下,点只是一个点而不是正则表达式中具有特殊含义的点。
答案 3 :(得分:0)
点.
是predefined character class。它匹配任何字符(可能匹配或不匹配行终止符)。如果要定义包含range值的字符类,可以使用[]
。