2017-04-03 1 views
1

길이가 얼마인지 또는 어떤 문자가 사용되었는지 알 수없는 문자열이 있습니다. 문자열에서 검색하여 ""안에있는 하위 문자열을 가져 오려고합니다. 내가는 Pattern.compile을 사용하려고하지만 항상 빈 문자열문자열에서 여러 번 부분 문자열 가져 오기

Pattern p = Pattern.compile("\".\""); 
Matcher m = p.matcher(mystring); 
while(m.find()){ 
    System.out.println(m.group().toString()); 
} 

내가 어떻게 할 수를 반환?

답변

1

사용 .+?.+ 당신이 인용 내부에 적어도 하나 이상의 문자를하도록 지정

Pattern p = Pattern.compile("\".+?\""); 

그룹화와 "" 내부의 모든 문자를 얻을 수 있습니다. ?은 다른 그룹에 서로 다른 인용문을 넣을 것을 꺼리는 수량 지정자로 지정합니다.

단위 테스트 예 :

@Test 
public void test() { 
    String test = "speak \"friend\" and \"enter\""; 

    Pattern p = Pattern.compile("\".+?\""); 
    Matcher m = p.matcher(test); 
    while(m.find()){ 
    System.out.println(m.group().toString().replace("\"", "")); 
    } 
} 

출력 :

당신의 정규식이 실제로 사이에 하나 개의 문자를 검색하기 때문입니다
friend 
enter 
+0

으로 다시 써야합니다. 한 가지 질문입니다. 예를 들어, 어떻게 친구를 보여주고 ""없이 입력 할 수 있습니까? – Ayhem

+0

@Ayhem 가장 쉬운 방법은'.replace ("\" "," ")'와 같이 따옴표를 제거하는 것입니다. –

0

"와"... 당신이 더 많은 문자를 검색하려면, 당신은 당신의 정규식을 "\".?\""

관련 문제