2012-04-17 49 views
1

Java String类有一个matches(String regex)方法,用于检查当前字符串是否与给定的正则表达式匹配。但是,我们如何才能找到当前字符串的子字符串是否与正则表达式匹配?如何找出Java字符串的子字符串是否与正则表达式匹配?

我想模仿使用Java的grep的行为。 grep占据一行,并打印与行中任何位置的给定正则表达式匹配的所有行。我不知道如何用Java来做这件事,因为matches方法检查整行(即字符串)是否匹配正则表达式,而不是匹配正则表达式中的任何子字符串。

+3

将通配符放在正则表达式的两端解决您的问题? – 2012-04-17 20:39:29

+0

哇@ColinD,这是一个很棒的建议!它一定会解决我的问题! – CodeBlue 2012-04-17 20:43:22

回答

2

像ColinD说,最好的办法是在你的字符串来一次读取一行,然后用勉强运行的正则表达式通配符在两端。

+0

因此,您复制了科林的评论并将其作为答案!大声笑 – CodeBlue 2012-04-17 20:44:56

+0

不,因为你必须确保通配符不愿意或者不起作用,他没有指定。 – Charles 2012-04-17 20:47:54

+0

什么是不情愿的通配符? – CodeBlue 2012-04-17 20:48:37

6

Matcher#find()方法,你想要做

+0

你如何获得找到的比赛? find返回一个布尔值 – shrewquest 2016-04-06 11:55:44

1

您可以修改正则表达式以允许在前端和字符串的后面通配符什么。

所以不是:

Pattern regex = Pattern.compile("hello\\sworld") 

你有

Pattern regex = Pattern.compile(".*hello\\sworld.*); 
+0

请记住,至少第一个通配符需要您的代码不愿意工作。 – Charles 2012-04-17 20:45:44

相关问题