2012-04-17 51 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

相關問題