如何匹配Java正则expression式中的“任何字符”?
以下内容应该匹配:
AAA123 ABCDEFGH123 XXXX123
我可以吗: ".*123"
?
是的你可以。 这应该工作。
-
.
=任何字符 -
\.
=实际的点字符 -
.?
=.{0,1}
=匹配任何零次或一次字符 -
.*
=.{0,}
=匹配任何零次或多次的字符 -
.+
=.{1,}
=匹配任何一个或多个字符
是的,这将工作,但请注意.
将不会匹配换行符,除非在编译expression式时传递DOTALL标志:
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL); Matcher matcher = pattern.matcher(inputStr); boolean matchFound = matcher.matches();
有很多复杂的正则expression式testing和开发工具,但是如果你只是想在Java中使用一个简单的testing工具,下面是一个供你使用的testing工具:
String[] tests = { "AAA123", "ABCDEFGH123", "XXXX123", "XYZ123ABC", "123123", "X123", "123", }; for (String test : tests) { System.out.println(test + " " +test.matches(".+123")); }
现在,您可以轻松添加新的testing用例并尝试新的模式。 玩得开心探索正则expression式。
也可以看看
- regular-expressions.info/Tutorial
使用模式.
匹配任何字符一次, .*
匹配任何字符零次或多次, .+
匹配任何字符一次或多次。
不, *
会匹配零个或多个字符。 您应该使用+
,而不是匹配一个或多个。
这个expression可能对你更好: [AZ]+123
尝试正则expression式。{3,}。 这将匹配所有字符期望一个新的行。