2014-03-03 3 views
0

확인. 나는 뭔가를 놓친다는 것을 안다. 나는 내가 무엇을 놓치고 있는지 알 수 없다. 아래에 언급 된 패턴은 "|" 그리고 나는 이유를 모른다. 누군가 설명해 주시겠습니까? 감사. 한 문자와 일치시키고 싶습니다. 문자 집합은 {,}, [,], |,?입니다. 당신이 ()와 함께 간다 구문을 사용하는 것처럼 보이는 경우 등정규식 패턴 일치 "|"이유 아래 표시된 코드에서?

public static void main(String[] args) { 
    String str = ""; 
    if (str.matches("[\"|`|+|,|;|<|>|?|\\[|\\]|{|}|']")) 
     System.out.println("matches"); 

} 
+1

당신은 놀랍다 고합니다. 일치하지만, 당신은 | 당신이 허용하고 싶은 캐릭터 세트에? –

답변

2

일치하는 문자 배열을 사용하고 있기 때문에 | 기호를 정규식에 사용할 필요가 없습니다. 당신은 문자열이 단순히

String pattern = "[abcd]*"; // * means they can be repeated, for example "aabdcb" 
str.matches(pattern); 

파이프를 사용할 필요를 할 수 없다 그 문자를 포함 할 수 있다는 것을 의미한다 a,b,c or d에 뭔가를 일치 시키려면 기본적으로합니다. 당신이 엄격하게 문자열 중 하나라고 말할하려면 다른 한편으로 a or b이 당신을 위해 일을 조금 정리할

pattern = "(a)|(b)"; // matches either "a" or "b" 

희망 같은 패턴을 사용할 수 있습니다.

정규식에서 파이프 사용에 대한 자세한 내용은 this page을 확인하십시오.

+0

오, 달콤한 주인. 나는 좀 쉬어야 해. 고마워. – TheLostMind

3

당신은, 시작하고 표현을 종료 []을 사용하고 있습니다. 대괄호를 사용하면 일치하는 문자를 나열 할 수 있고 |은 여러 번 목록에 포함됩니다. 괄호 안에는 |을 사용하여 "또는"을 의미하는 그룹을 만들 수 있습니다.

당신을위한 해결책은 그 (것)들을 제거하는 것이라고 생각합니다 |. 대괄호 안의 문자는 구분하지 않고 모두 나열합니다.

+0

답변 해 주셔서 감사합니다. :) – TheLostMind

0

간단히 말해서, |은 [] 대괄호 안에 있습니다.

대괄호 [] 내의 모든 문자가 일치합니다.

모두 제거 |은 중괄호 안에 있습니다.