Rumah >Java >javaTutorial >Bagaimana untuk Memisahkan Teks Dipisahkan Koma dengan Petikan Menggunakan Ungkapan Biasa?
Memisahkan Teks Dipisahkan Koma dengan Petikan
Dalam senario tertentu di mana data teks mengandungi nilai dipisahkan koma, adalah perlu untuk memisahkan data berdasarkan koma. Walau bagaimanapun, cabaran timbul apabila data mengandungi rentetan dengan koma terbenam dalam petikan.
Untuk menangani perkara ini, penyelesaian serba boleh adalah menggunakan ungkapan biasa yang secara khusus menyasarkan koma yang terletak di luar petikan berganda:
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Membedah regex ini:
Sebagai alternatif, regex yang sama boleh ditulis dalam format yang lebih mudah dibaca menggunakan pengubah suai (?x), yang membenarkan ungkapan berbilang baris untuk meningkatkan kebolehbacaan:
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 );
Penyelesaian ini menyelesaikan isu pemisahan teks yang dipisahkan koma secara berkesan sambil mengekalkan integriti rentetan yang mengandungi koma yang disertakan dalam petikan berganda.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Teks Dipisahkan Koma dengan Petikan Menggunakan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!