2012-12-26 59 views
-5

這裏是我的代碼我可以使用正則表達式中包含方法

public class regMatch { 

    public static void main(String... args) 
    { 
     String s = "1"; 
     System.out.println(s.contains("/[0-9]/")); 
    } 
} 

其打印假的;

我想在contains方法中使用正則表達式。

我該如何使用它。

+0

http://docs.oracle.com/javase/tutorial/essential/regex/ –

+0

我想檢查他們的任何數字是否存在於字符串中 – Pratik

+1

爲什麼你堅持只使用'contains'方法? –

回答

6

我想在contains方法中使用正則表達式。

我如何使用它

可以使用正則表達式中contains方法

1

您可以使用Pattern類來測試正則表達式匹配。但是,如果您只是測試字符串中是否存在數字,則直接測試它會比使用正則表達式更有效。

3

你不需要(且不應使用)分隔符在Java正則表達式

而方法不支持正則表達式。你需要一個正則表達式對象:

Pattern regex = Pattern.compile("[0-9]"); 
Matcher regexMatcher = regex.matcher(s); 
System.out.println(regexMatcher.find()); 
1

您可以使用matches()用正則表達式.*[0-9].*發現,如果有任何數字:

System.out.println(s.matches(".*[0-9].*")); 

(或多個字符串,使用正則表達式(.|\\s)*[0-9](.|\\s)*代替)

另一種方法 - 如果您渴望使用將遍歷從0到9的所有字符,並檢查每個字符串是否包含它:

boolean flag = false; 
    for (int i = 0; i < 10; i++) 
     flag |= s.contains("" + i); 
    System.out.println(flag); 
+0

多線字符串失敗。 –

+0

@TimPietzcker:謝謝你指出。你當然可以在正則表達式中添加'\\ s'。請參閱編輯。 – amit

+2

哎呀。更好地將'(?s)'加入到正則表達式中。或者,更好的是,除了我在解決方案中提出的'matcher.find()'外,不要使用'matches()'。 –