[...]正则表达式的含义是什么?

时间:2015-05-06 07:09:27

标签: java regex

我是regex的新手,通过tutorial我发现正则表达式[...]Matches any single character in brackets.。所以我试过

System.out.println(Pattern.matches("[...]","[l]"));

我也试过转义括号

System.out.println(Pattern.matches("[...]","\\[l\\]"));

但它给了我false我期望true,因为l在括号内。

如果有人清楚我的疑惑,那会很有帮助。

3 个答案:

答案 0 :(得分:4)

[]内的字符(称为character class)被视为一组可供选择的字符,但 leading {{1否定结果,^表示范围(如果它在两个字符之间)。例子:

  • -匹配[-123]-12
  • 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("[.]+","......"));