2013-12-17 130 views
1

我有以下的Java mehod並有參數是searchPattern一些條件:在java中調查一個字符串是否包含一些特殊符號?

public boolean checkPatternMatching(String sourceToScan, String searchPattern) { 

    boolean patternFounded; 

    if (sourceToScan == null) { 
     patternFounded = false; 
    } else { 
     Pattern pattern = Pattern.compile(Pattern.quote(searchPattern), 
       Pattern.CASE_INSENSITIVE); 
     Matcher matcher = pattern.matcher(sourceToScan); 
     patternFounded = matcher.find(); 
    } 
    return patternFounded; 
} 

我想搜索所有字母(大寫和小寫必須考慮),只有特殊標誌「 - 」(!) ,「:」和「=」。所有其他值必須從此方法出現「false」。

我怎樣才能實現這個邏輯參數「searchPattern」?

+0

試試這個' 「[A-ZA-Z] - ,= \\ S] +」' –

+0

它必須如何實施如果只有字母(大寫和小寫)是重要的?你爲什麼要評論? – Marwief

+0

如果只有字母' 「[[α-ZA-Z] \\ S] +」'。 '\\ s'用於空格。我不知道如果我的回答是適合你的情況。所以我剛發表評論。如果它有效,我會改變它的答案。 –

回答

0

嘗試searchPattern = "[a-zA-Z:=-]"

0

嘗試此圖案[a-zA-Z=,_!:]

String pattern ="[a-zA-Z=,_!:]";   
String input="hello_:,!="; 
if(input.matches(pattern)){ 
     System.out.println("true"); 
}else{ 
     System.out.println("false"); 
} 
1
"[[a-zA-Z]!-=:\\s]+" 

方括號意味着一個字符類,其中的每個字符在其中將匹配括號內的所有字符。 +表示字符類中的一個或多個字符,\\s用於空格。

所以,如果你只想在原崗位字母的空間,按您的評論

"[[a-zA-z]\\s]+" 
1
searchPattern = "^[A-Za-z!=:-]+$" 

^手段「開始」
$意味着
[A-Za-z!=:-]是一個「結尾」 character class包含任何字母或符號!=:-
+意味着「1個或more`前面

Regular expression visualization

這將工作,如果字符串將包含這些符號,即沒有空格或其他任何東西。

如果你想包含給定符號的字符串還可以包含空格,使用:

searchPattern = "^[A-Za-z!=:-\\s]+$" 

\\s代表空格字符

最後,如果你想簡單看如果字符串包含這些符號中的任何一個,則可以使用:

searchPattern = "[A-Za-z!=:-]" 
0

使用searchPattern([a-zA-Z]!-:=)+

enter image description here

+0

只有在OP要求字符串中至少包含一個字符的情況下才有效。這並不限制字符串只能是這些字符(OP沒有指定是否是這種情況,但是你給出的答案沒有解釋它的作用)。另外,你爲什麼使用捕獲組? –

相關問題