【问题标题】:What does the regular expression [.\d\D]* mean?正则表达式 [.\d\D]* 是什么意思?
【发布时间】:2013-11-24 07:13:05
【问题描述】:

[.\\d\\D]* 是什么意思。

我正在尝试通过

检查有效的 java main 方法语句
java.matches("[.\\d\\D]*((public)\\s(static)\\s(void)\\s(main)\\((String)\\[\\]\\s(args)\\))[.\\d\\D]*");

那部分是什么意思?

【问题讨论】:

  • 你可以regexpal.com 真的很有帮助
  • regex101.com 也很有用。

标签: regex


【解决方案1】:

[.\d\D]* 表示匹配:

0 or more of anyone of these properties

  • 数字
  • 非数字
  • 文字点

IMO 这并不是真正需要的,因为它可以有效地匹配任何内容,并且等效于带有 DOTALL 开关的 .*

【讨论】:

  • .* 是否也包含换行符 (\n)?我的一个测试用例 ("\n // ///*\"public static void main(String[] args)\"*/ \n ") 失败了。
  • 确实很奇怪。即使没有 DOTALL,[\d\D][\s\S][\w\W](即没有 .)也是我见过的形式。额外的. 让原作者看起来像是刚刚开始乱扔东西。
  • @SWKING 这很奇怪,因为. 在那里毫无意义(因为它被[\d\D] 覆盖)。无论如何,请参阅 DOTALL:docs.oracle.com/javase/7/docs/api/java/util/regex/…
  • DOT 将不匹配换行符,除非您在正则表达式前面使用 (?s),例如 "a\nb".matches("(?s).*");Pattern.DOTALL 标志
猜你喜欢
  • 2017-02-27
  • 2014-09-02
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
相关资源
最近更新 更多