공백을 사용하여 문자열을 분할하는 정규식
문자열 작업을 할 때 분석이나 처리를 위해 문자열을 개별 단어로 분할해야 하는 경우가 많습니다. 그러나 인용된 텍스트 내의 공백(예: "이것은 문자열입니다.")은 구분 기호로 간주되어서는 안 됩니다. 정규식(Regex)은 이러한 복잡한 분할 작업을 처리하는 강력한 방법을 제공합니다.
질문:
둘러싸인 공백을 무시하고 공백을 사용하여 문자열을 분할하는 Regex 표현식을 만듭니다. 싱글 또는 더블로 quote.
예:
입력: "'정규 표현식'이 항목과 일치할 때 "강조 표시될" 문자열입니다."
원함 출력:
This is a string that will be highlighted when your regular expression matches something.
답변:
제공된 표현식 (?!")이 올바르게 분할되지 않지만 포괄적인 Regex 표현식은 다음과 같이 공식화될 수 있습니다.
이 표현은 두 가지 유형을 효과적으로 포착합니다. 요소:
인용 텍스트:
Java 구현:
다음 Java 코드는 이 Regex를 다음에 적용하는 방법을 보여줍니다. 문자열 분할:
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexSplitter { public static void main(String[] args) { String subjectString = "This is a string that \"will be\" highlighted when your 'regular expression' matches something."; // Pattern that matches unquoted words, quoted texts, and the capturing groups Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); // List to store the split words List<String> matchList = new ArrayList<>(); while (regexMatcher.find()) { // Check for capturing groups to exclude quotes if (regexMatcher.group(1) != null) { // Add double-quoted string without the quotes matchList.add(regexMatcher.group(1)); } else if (regexMatcher.group(2) != null) { // Add single-quoted string without the quotes matchList.add(regexMatcher.group(2)); } else { // Add unquoted word matchList.add(regexMatcher.group()); } } // Display the split words for (String word : matchList) { System.out.println(word); } } }
출력:
This is a string that will be highlighted when your regular expression matches something
이 향상된 토론은 문제를 명확하게 하고 자세한 설명과 함께 보다 정확하고 포괄적인 Regex 표현식을 제공합니다. 사용법을 보여주기 위한 Java 구현입니다.
위 내용은 Regex를 사용하여 따옴표 안의 공백을 무시하면서 공백을 사용하여 문자열을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!