我是regex的新手,通过tutorial我发现正则表达式[...]
说Matches any single character in brackets.
。所以我试过
System.out.println(Pattern.matches("[...]","[l]"));
我也试过转义括号
System.out.println(Pattern.matches("[...]","\\[l\\]"));
但它给了我false
我期望true
,因为l
在括号内。
如果有人清楚我的疑惑,那会很有帮助。
答案 0 :(得分:4)
[
和]
内的字符(称为character class)被视为一组可供选择的字符,但 leading {{1否定结果,^
表示范围(如果它在两个字符之间)。例子:
-
匹配[-123]
,-
,1
或2
3
匹配1到3 [1-3]
匹配任何字符,但范围为1到3的任何数字[^1-3]
匹配任何字符 .
与 dot [.]
如果您想匹配字符串.
,则应将正则表达式更改为:
[l]
现在打印System.out.println(Pattern.matches("...", "[l]"));
。
正则表达式true
相当于正则表达式[...]
和\.
。
答案 1 :(得分:4)
该教程有点误导,它说:
[...]匹配括号中的任何单个字符。
然而,这意味着正则表达式将匹配括号内任何字符的单个字符。 ...表示"在此处插入您想要匹配的字符" 。因此,您需要将...替换为您想要匹配的字符。
例如,[AP]M
将匹配" AM"和" PM"。
如果你的正则表达式是字面意思[...]
那么它将与文字点匹配。请注意,括号内没有重复字符。
答案 2 :(得分:2)
教程说:
匹配括号中的任何单个字符。
这意味着您将...
替换为单个字符,例如[l]
这些将打印为true:
System.out.println(Pattern.matches("[l]","l"));
System.out.println(Pattern.matches("[.]","."));
System.out.println(Pattern.matches("[.]*","."));
System.out.println(Pattern.matches("[.]*","......"));
System.out.println(Pattern.matches("[.]+","......"));