在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()
是使用提供的正则表达式调用parseStr
,是将字符串解析为组的一种方法。在提供的示例中,这与包含单词“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
中使用构造函数。只有专家才应该编写教程,这段很短的代码中有很多错误。