(.*)
在第三行中的责任是什么以及它如何运作?
String Str = new String("Welcome to Tutorialspoint.com");
System.out.print("Return Value :" );
System.out.println(Str.matches("(.*)Tutorials(.*)"));
答案 0 :(得分:4)
.matches()
是使用提供的正则表达式解析Str
的调用。
Regex, or Regular Expressions,是一种将字符串解析为组的方法。在提供的示例中,这匹配任何包含单词“Tutorials”的字符串。 (.*)
只是表示“一组零个或多个任何角色”。
This page是一个很好的正则表达式引用(对于非常基本的语法和示例)。
答案 1 :(得分:4)
您的表达匹配任何带有前缀的字词,后缀为字Tutorial
的任何字符。 .*
表示任意次数的出现,包括零次。
.
代表正则表达式meta-character,表示任何字符。
*
是正则表达式quantifier,表示与其关联的表达式字符出现0次或多次。
答案 2 :(得分:2)
matches
将regular expression字符串作为参数,(.*)
表示贪婪地捕获任何字符零次或多次
答案 3 :(得分:2)
.*
表示任意一个零个或多个字符的组
答案 4 :(得分:2)
在Regex
:
的
.
强> 的通配符:匹配除
之外的任何单个字符\n
例如,模式a.e
匹配ave
中的nave
和ate
中的water
的
*
强> 的匹配前一个元素零次或多次
例如模式\d*\.\d
匹配.0
,19.9
,219.9
答案 5 :(得分:0)
没有理由在.*
附近放置括号,如果您已经有String
字符,也没有理由实例化String
。但更糟糕的是matches()
方法在这里不合适。
它的作用是贪婪地匹配String的开头到结尾的任何字符。然后它回溯直到找到"Tutorials"
,之后它将再次匹配任何字符(换行符除外)。
使用find方法更好更清晰。 find方法只是在String中找到第一个"Tutorials"
,您可以从模式中删除"(.*)"
部分。
为方便起见,作为一个班轮:
System.out.printf("Return value : %b%n", Pattern.compile("Tutorials").matcher("Welcome to Tutorialspoint.com").find());