Rumah >Java >javaTutorial >Bagaimana untuk Memadankan Koma di Luar Tanda Kurung di Jawa?

Bagaimana untuk Memadankan Koma di Luar Tanda Kurung di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-11-11 21:49:02312semak imbas

How to Match Commas Outside Parentheses in Java?

Memadankan Koma Tidak Termasuk Kejadian Kurung

Pertimbangkan rentetan berikut:

12,44,foo,bar,(23,45,200),6

Tugas di tangan adalah untuk merangka ungkapan biasa yang secara khusus menyasarkan koma yang terletak di luar kurungan. Dalam erti kata lain, dalam contoh yang disediakan, kita memerlukan regex yang sepadan dengan dua koma selepas "23" dan "45" tetapi mengecualikan yang lain.

Java Regular Expression Solution

Menganggap kurungan bersarang tiada, kami boleh menggunakan ungkapan biasa Java berikut untuk mencapai yang diingini hasil:

Pattern regex = Pattern.compile(
    ",         # Match a comma\n" +
    "(?!       # only if it's not followed by...\n" +
    " [^(]*    #   any number of characters except opening parens\n" +
    " \)      #   followed by a closing parens\n" +
    ")         # End of lookahead", 
    Pattern.COMMENTS);

Penjelasan Regex

regex ini menggunakan pernyataan pandangan negatif untuk mengesahkan bahawa sebarang kurungan berikutnya (jika ditemui) bukanlah kurungan penutup. Jika syarat ini dipenuhi, koma diiktiraf sebagai padanan.

Penegasan pandang ke hadapan beroperasi seperti berikut:

  • (?! memulakan penegasan pandangan ke hadapan negatif.
  • [^(]* menunjukkan bahawa enjin regex harus mencari sebarang bilangan aksara kecuali pembukaan kurungan.
  • \) menyatakan bahawa kurungan penutup hendaklah serta-merta mengikut aksara sebelumnya.
  • ) menyimpulkan pernyataan pandangan ke hadapan.

Ini memastikan regex hanya sepadan koma yang tidak segera diikuti dengan kurungan penutup.

Atas ialah kandungan terperinci Bagaimana untuk Memadankan Koma di Luar Tanda Kurung di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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