2012-10-11 4 views
-4

문자열에서 값을 캡처하는 데 문제가 있습니다. 입력이 있지만 형식이 없으므로 ; 특수 문자로 구분됩니다.두 개 이상의 특수 문자가있는 정규식 그룹 캡처

test?test; [email protected];name=vonnegut 

나는 주어진 특수 문자와이 입력을 분할 한 후 = 같은 다른 특수 문자가 포함 된 결과를 찾을 싶습니다. 이것에 대한

결과 : name=vonnegut

+0

그 문자들은별로 특별하지 않습니다. – keyser

+0

Stack Overflow에 오신 것을 환영합니다! [귀하의 질문을 연구하십시오] (http://stackoverflow.com/questions/how-to-ask). [이미 시도한 것] (http://whathaveyoutried.com/)이 있으면 질문에 추가하십시오. 아니라면 질문을 먼저 연구하고 시도한 다음 다시 방문하십시오. –

답변

1

일련의 문자와 일치하는 부정 문자 클래스입니다, 아마 올바른 정규 표현식을 포함하는 대답은 ... 이미있는 (+은 적어도 하나를 의미 함) 세미콜론이 아닙니다 (줄 바꿈 문자와도 일치하므로 문자열에 포함 된 경우주의해야합니다.)

+0

그건 아주 우아한 솔루션 + 멋진 링크입니다. – brimborium

1

는 문자열에 대한 분할() 메소드를 살펴 보라는 정확히 어떻게해야 당신이 원하는 것을.

";" 처음에 "="결과 문자열에. ?

+0

실제로 split (";") 메서드로 처리 한 다음 다른 문자를 검색 할 수는 있지만 상당히 복잡합니다. 어쩌면 거기에 하나의 정규식으로 처리 할 수있는 방법이 있습니다. –

0
String input = "test?test; [email protected];name=vonnegut"; 
String[] splittedInput = input.split(","); 
for (String str:splittedInput) { 
    System.out.println(str); 
} 

= 당신

시험 테스트
1231 테스트
이름 @에게 제공 예를 들어,

지금 당신은 당신의 다음 문자에 대한 각각의 문자열을 테스트 할 수 있습니다 거트 :

for (String str:splittedInput) { 
    if (str.contains("=") { 
    System.out.println(str); 
    } 
} 

또한 정규식 검색을 직접 수행 할 수도 있습니다. 그 중 하나를 (정규 표현식을 자주 사용하지 마십시오)보아야하지만, 쉽게 이해할 수 있습니다.) 당신이

[^;]+=[^;]+ 

here on Regexr

[^;]+ 그것을 참조 시도 할 수

+0

고마워요.하지만 이미 해 봤습니다. 나는이 분야에서 정말로 새로운 것입니다. 왜 당신은 말 했나요? 정규 표현식을 자주 사용하지 않습니까? 정말 고마워! –

+0

그런 다음 질문에 그렇게 선언하면 (다른 사람들에게 도움이 될 수 있음) 제안합니다. 그리고 이미 답을 얻었 으면 그에게 줄을 띄우십시오. (왼쪽에'^', 녹색 수락 체크 표시 위에). 당신은 그를 수여 할 수 있습니다. (그리고 내 의견으로는 그는 그의 대답이 정확히 당신이 찾고있는 것이기 때문에 그것을 얻었습니다.) – brimborium

+0

구문에 대한 이해가 없기 때문에 자주 사용하지 않습니다. 그리고 자주 사용하지 않기 때문에 구문을 이해하지 못합니다. 그것은 게으른 점성의 원입니다 ...;) 정규 표현식은 훌륭한 도구입니다. 나는 당신이 그것을 사용하는 것이 좋습니다 (나보다 더 자주 : P). – brimborium