2013-12-17 479 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没有指定是否是这种情况,但是你给出的答案没有解释它的作用)。另外,你为什么使用捕获组? –

相关问题