Java String中(。*)的责任是什么?

时间:2012-11-04 05:56:24

标签: java regex string

(.*)在第三行中的责任是什么以及它如何运作?

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

6 个答案:

答案 0 :(得分:4)

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

Regex, or Regular Expressions,是一种将字符串解析为组的方法。在提供的示例中,这匹配任何包含单词“Tutorials”的字符串。 (.*)只是表示“一组零个或多个任何角色”。

This page是一个很好的正则表达式引用(对于非常基本的语法和示例)。

答案 1 :(得分:4)

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

.代表正则表达式meta-character,表示任何字符

*是正则表达式quantifier表示与其关联的表达式字符出现0次或多次

答案 2 :(得分:2)

matchesregular expression字符串作为参数,(.*)表示贪婪地捕获任何字符零次或多次

答案 3 :(得分:2)

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

答案 4 :(得分:2)

Regex

  

.

     

通配符:匹配除\n

之外的任何单个字符

例如,模式a.e匹配ave中的naveate中的water

  

*

     

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

例如模式\d*\.\d匹配.019.9219.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());