Regex untuk Memisahkan Rentetan: Mengabaikan Ruang Dalam Petikan
Mengenal pasti ruang untuk pemisahan rentetan boleh mencabar apabila ruang tersebut disertakan dalam satu atau dua petikan. Untuk menangani perkara ini, pertimbangkan ungkapan biasa berikut:
[^\s"']+|\"([^\"]*)"|'([^']*)'
Ungkapan ini memisahkan rentetan kepada dua jenis corak:
Pelaksanaan Java:
Kod Java berikut menggunakan ungkapan biasa ini untuk memisahkan rentetan:
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 } }
Lebih ringkas Pilihan:
Jika mengekalkan petikan dalam senarai yang dikembalikan boleh diterima, versi kod yang lebih mudah adalah mungkin:
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); }
Pendekatan ini kurang kompleks tetapi termasuk petikan dalam yang dikembalikan senaraikan elemen.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dengan Ruang Dalam Petikan Menggunakan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!