Rumah > Java > javaTutorial > Bagaimana untuk Memisahkan Rentetan dengan Ruang Dalam Petikan Menggunakan Ungkapan Biasa?

Bagaimana untuk Memisahkan Rentetan dengan Ruang Dalam Petikan Menggunakan Ungkapan Biasa?

Patricia Arquette
Lepaskan: 2024-12-18 02:22:14
asal
553 orang telah melayarinya

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

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"']+|\"([^\"]*)"|'([^']*)'
Salin selepas log masuk

Ungkapan ini memisahkan rentetan kepada dua jenis corak:

  • Perkataan yang tidak disebut: Sebarang urutan daripada aksara yang tidak mengandungi ruang atau petikan, ditangkap dalam kumpulan pertama.
  • Dipetik rentetan: Urutan yang disertakan dalam petikan tunggal atau berganda, tanpa petikan di dalamnya. Kumpulan penangkap menangkap teks dalam petikan, tidak termasuk petikan itu sendiri.

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
    }
}
Salin selepas log masuk

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());
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan