포함된 따옴표로 구분된 텍스트 분할
쉼표로 구분된 형식을 따르는 텍스트를 구문 분석할 때 포함된 따옴표를 처리하는 것이 어려울 수 있습니다. 이 문서에서는 이 문제를 다루면서 따옴표로 묶인 텍스트의 무결성을 유지하면서 쉼표로 문자열을 분할하는 솔루션을 제공합니다.
다음 텍스트를 고려하세요.
123,test,444,"don't split, this",more test,1
기본 문자열 사용. Split(",") 메서드는 다음과 같은 결과를 산출합니다.
123 test 444 "don't split this" more test 1
그러나 목표는 인용된 텍스트를 유지하는 것입니다. 단일 엔터티로:
123 test 444 "don't split, this" more test 1
이를 달성하기 위해 정규식 기반 솔루션을 사용합니다.
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
이 표현식은 뒤에 짝수가 오는 쉼표를 기준으로 문자열을 분할합니다. 큰따옴표의 수. 이렇게 하면 인용된 텍스트 안의 쉼표가 구분 기호로 무시됩니다.
정규 표현식 이해:
대체 구문:
가독성을 위해 (?x) 수정자를 사용하여 정규식을 여러 줄로 나눌 수도 있습니다.
String[] arr = str.split("(?x) " + ", " + // Split on comma "(?= " + // Followed by " (?: " + // Start a non-capture group " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " )* " + // 0 or more repetition of non-capture group (multiple of 2 quotes will be even) " [^\"]* " + // Finally 0 or more non-quotes " $ " + // Till the end (This is necessary, else every comma will satisfy the condition) ") " // End look-ahead );
이 접근 방식을 사용하면 쉼표와 포함된 따옴표를 모두 고려하여 구분된 텍스트를 정확하게 분할할 수 있습니다.
위 내용은 쉼표로 구분된 문자열을 포함된 따옴표로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!