在Java字符串中,(*)的职责是什么?

在Java字符串中,(*)的职责是什么?,java,regex,string,Java,Regex,String,第三行中的(.*)的职责是什么?它是如何工作的 String Str = new String("Welcome to Tutorialspoint.com"); System.out.print("Return Value :" ); System.out.println(Str.matches("(.*)Tutorials(.*)")); matches将字符串作为参数,(.*)意味着贪婪地捕获任何字符零次或多次。matches()是使用提供的正则表达式调用parseStr ,是将字符串解

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

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

matches
将字符串作为参数,
(.*)
意味着贪婪地捕获任何字符零次或多次

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

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


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

您的表达式任何单词前缀和后缀都匹配
教程
<代码>*表示任何字符出现任意次数,包括零次

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


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

*
表示在
正则表达式中任何字符出现0次或更多次。

通配符:匹配除
\n

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

*

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


例如,模式
\d*.\d
匹配
.0
19.9
219.9
没有理由在
*
周围加括号,如果您已经得到了一个文本
字符串,也没有理由实例化
字符串。但更糟糕的是,
matches()
方法在这里不合适

它所做的是贪婪地匹配字符串开头到结尾的任何字符。然后它回溯,直到找到
“Tutorials”
,之后它将再次匹配任何字符(新行除外)

使用这种方法更好、更清晰。find方法仅查找字符串中的第一个
“Tutorials”
,您可以从模式中删除
“(.*)”
部分

为方便起见,作为一个内衬:

System.out.printf("Return value : %b%n", Pattern.compile("Tutorials").matcher("Welcome to Tutorialspoint.com").find());

千万不要像这样在
String
中使用构造函数。只有专家才应该编写教程,这段很短的代码中有很多错误。