2

第三行的职责是什么,(.*)它是如何工作的?

String Str = new String("Welcome to Tutorialspoint.com");
System.out.print("Return Value :" );
System.out.println(Str.matches("(.*)Tutorials(.*)"));
4

6 回答 6

4

.matches()是使用提供的正则表达式进行解析的调用Str

正则表达式或正则表达式是一种将字符串解析为组的方法。在提供的示例中,这匹配任何包含单词“Tutorials”的字符串。(.*)简单的意思是“一组零个或多个任意字符”。

此页面是一个很好的正则表达式参考(用于非常基本的语法和示例)。

于 2012-11-04T05:58:25.053 回答
4

您的表达式匹配以 word 的任何字符为前缀和后缀的任何单词Tutorial.*表示任何字符出现任意次数,包括零次。

表示正.则表达式元字符,表示任何字符

是一个正*则表达式量词,表示与其关联的表达式字符出现 0 次或多次。

于 2012-11-04T05:59:07.313 回答
2

matches正则表达式字符串作为参数,(.*)表示贪婪地捕获任何字符零次或多次

于 2012-11-04T05:58:13.430 回答
2

.*表示一组零个或多个任意字符

于 2012-11-04T05:59:19.637 回答
2

Regex

.

通配符:匹配任何单个字符,除了\n

例如模式a.e匹配aveinnaveateinwater

*

匹配前一个元素零次或多次

for example pattern \d*\.\d matches .0, 19.9, 219.9

于 2012-11-04T08:14:16.327 回答
0

There is no reason to put parentheses around the .*, nor is there a reason to instantiate a String if you've already got a literal String. But worse is the fact that the matches() method is out of place here.

What it does is greedily matching any character from the start to the end of a String. Then it backtracks until it finds "Tutorials", after which it will again match any characters (except newlines).

It's better and more clear to use the find method. The find method simply finds the first "Tutorials" within the String, and you can remove the "(.*)" parts from the pattern.

As a one liner for convenience:

System.out.printf("Return value : %b%n", Pattern.compile("Tutorials").matcher("Welcome to Tutorialspoint.com").find());
于 2012-11-04T12:03:20.073 回答