>Java >java지도 시간 >정규식을 사용하여 따옴표 안의 공백으로 문자열을 분할하는 방법은 무엇입니까?

정규식을 사용하여 따옴표 안의 공백으로 문자열을 분할하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-18 02:22:14553검색

How to Split Strings with Spaces Inside Quotes Using Regular Expressions?

문자열 분할을 위한 정규식: 따옴표 내의 공백 무시

해당 공백이 단일 또는 이중으로 묶인 경우 문자열 분할을 위한 공백을 식별하는 것이 어려울 수 있습니다. 인용 부호. 이 문제를 해결하려면 다음 정규 표현식을 고려하십시오.

[^\s"']+|\"([^\"]*)"|'([^']*)'

이 표현식은 문자열을 두 가지 유형의 패턴으로 구분합니다.

  • 따옴표가 없는 단어: 모든 시퀀스 첫 번째 그룹에 캡처된 공백이나 따옴표를 포함하지 않는 문자.
  • 인용됨 문자열: 작은따옴표나 큰따옴표로 묶인 시퀀스이며 그 안에 따옴표가 없습니다. 캡처링 그룹은 따옴표 자체를 제외하고 따옴표 안의 텍스트를 캡처합니다.

Java 구현:

다음 Java 코드는 이 정규 표현식을 사용하여 문자열:

List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        matchList.add(regexMatcher.group(1)); // Double-quoted string
    } else if (regexMatcher.group(2) != null) {
        matchList.add(regexMatcher.group(2)); // Single-quoted string
    } else {
        matchList.add(regexMatcher.group()); // Unquoted word
    }
}

간단함 옵션:

반환된 목록에 따옴표를 유지하는 것이 허용되는 경우 코드의 더 간단한 버전이 가능합니다.

List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}

이 접근 방식은 덜 복잡하지만 반환된 목록에 따옴표가 포함됩니다. 요소를 나열합니다.

위 내용은 정규식을 사용하여 따옴표 안의 공백으로 문자열을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.