>source

안녕하세요 Java에서 다음 문자열을 일치 시키려고합니다.

echo "a"b

이 지루한 정규식으로 :

String SPACE_REGEX = "[^\\s]+|\\s\"([^\"]*)\"|\\s\"([^\"]*)\"[^\\s]+";

문제는 두 번째 matcher.find() , matcher는 일치 할 수 있습니다 group(1) ...에 "a" , 하지만 group(2) 문자열을 찾을 수 없습니다 "a"b

다음은 테스트 코드입니다.

Pattern regex = Pattern.compile(SPACE_REGEX);
Matcher regexMatcher = regex.matcher(str);
while (regexMatcher.find()) {
     System.out.println(regexMatcher.group(1) + " " + regexMatcher.group(2));
}

다음은 출력입니다.

null null 
a null
null null

누군가이 정규식을 살펴볼 수 있습니까? OnlineRegexTest에서 그룹 2 정규식을 시도했지만 작동하지만 Java에서 여기에서 작동하지 않는 이유를 이해하지 못합니다.

최신 정보

내가하려는 것은 인용 된 문자열과 일치하는 것입니다. "a" 그런 명령으로

echo "a" b or echo "a"

하지만 안

echo b"a"b or echo "a"b

나는 다음과 같은 matcher 결과로 확인을 할 것입니다.

if (matcher.group(1) != null && matcher.group(2) == null) 
    print("found")

  • 답변 # 1

    이 시도:

    String SPACE_REGEX = "\\s\"([^\"]*)\"(?:\\s|$)";
    
    

    이것은 공백, 따옴표로 묶인 문자열, 공백 또는 문자열의 끝과 일치합니다.

    문자열의 내용은 group(1) .

관련 자료

  • 이전 reactjs - 반응에서 axios 응답에 액세스 할 수 없습니다
  • 다음 reactjs - Android 앱을 사용하여 Mapbox GL을 올바르게 설정하는 방법은 무엇입니까?