Pattern p2 = Pattern.compile(\".*\");
Matcher m2 = p2.matcher(\"true\");
System.out.println(m2.matches() + \" [\" + m2.group() + \"]\");
When I use
The dot . is a predefined character class. It matches any character (may or may not match line terminators). If want to define character class that includes a range of values, you can use [].
[] is the character class and most inside it stand for their actual symbol. Dot in this case would just be a dot and not a dot with special meaning in regex.
But I don't understand what is going on when I use this regexpr [.]*. It says me false.
Because inside a character class, the dot loses its special meaning and will match a plain old dot (the . character).
Outside of a character class the dot is a metacharacter that matches any character, excluding newlines (unless you use the Pattern.DOTALL modifier, of course).
Or how to make a class of symbols with any characters without \n and \r.
Use a negated character class:
Pattern p2 = Pattern.compile("[^\\r\n]*");
[^\r\n] means "match anything that's not a \r or a \n.
.* means any character 0 or more times
[.]* means dot character 0 or more times