Artikel ini menjelaskan pengoperasian ekstraksi rutin Java konten dalam tanda kurung. Bagikan untuk referensi Anda, sebagai berikut:
Saya pernah mengalami masalah dalam pekerjaan saya, yaitu saya perlu mengekstrak konten di setiap braket dalam string. Saya mencari secara online dan menemukan bahwa ekspresi reguler dapat digunakan untuk mengekstrak konten dalam tanda kurung. Implementasi spesifik adalah sebagai berikut:
import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ExtractMessage { public static void main(String[] args) { String msg = "PerformanceManager[1st bracket]Product[2nd bracket]<[3rd bracket]79~"; Daftar <String> Daftar = ExtractMessageByRegular (MSG); untuk (int i = 0; i <list.size (); i ++) {System.out.println (i+"->"+list.get (i)); }} / ** * Gunakan ekspresi reguler untuk mengekstrak konten dalam braket * @param msg * @return * / Daftar statis publik <string> ExtractMessageByRegular (String msg) {List <string> Daftar = ArrayList baru <string> (); Pola p = pola.compile ("(// [[^//]]*//])"); Pencocokan m = p.matcher (msg); while (m.find ()) {list.add (m.group (). Substring (1, m.group (). Length ()-1)); } daftar pengembalian; }}Hasil output adalah sebagai berikut:
0-> Braket 1
1-> braket kedua
2-> Braket ke-3
Ini dengan cepat menyelesaikan pekerjaan kode, tetapi kemudian saya menemukan bahwa jika tanda kurung masih berisi kurung, ekspresi reguler akan kehilangan efeknya. Saya harus menemukan cara untuk menyelesaikannya sendiri. Setelah penelitian, saya akhirnya menemukan solusi. Implementasi spesifik adalah sebagai berikut:
package com.perry.test;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ExtractMessage { public static void main(String[] args) { String msg = "PerformanceManager[1st bracket] Product[2nd bracket[2nd bracket Berisi braket]] <[braket ke -3] 79 ~ "; Daftar <String> Daftar = ExtractMessage (MSG); untuk (int i = 0; i <list.size (); i ++) {System.out.println (i+"->"+list.get (i)); }} / ** * Ekstrak konten dalam tanda kurung dan abaikan braket di braket * @param msg * @return * / daftar statis publik <string> extractmessage (string msg) {list <string> list = new ArrayList <string> (); int start = 0; int startflag = 0; int endflag = 0; untuk (int i = 0; i <msg.length (); i ++) {if (msg.charat (i) == '[') {startflag ++; if (startflag == endflag + 1) {start = i; }} lain jika (msg.charat (i) == ']') {endflag ++; if (endflag == startflag) {list.add (msg.substring (mulai + 1, i)); }}} daftar pengembalian; }}Hasil output adalah sebagai berikut:
0-> Braket 1
1-> braket kedua [braket berisi kurung]
2-> Braket ke-3
Gagasan utamanya adalah melintasi tali dan menandai posisi awal dan akhir dari kurung. Jika itu adalah posisi akhir yang sesuai dengan posisi awal tanda kurung, jumlah posisi awal dan posisi akhir sama, sehingga konten dari kurung lengkap dicegat.
PS: Berikut adalah dua alat ekspresi reguler yang sangat nyaman untuk referensi Anda:
Alat Pengujian Online JavaScript Reguler:
http://tools.vevb.com/regex/javascript
Alat pembuatan online ekspresi reguler:
http://tools.vevb.com/regex/create_reg
Untuk informasi lebih lanjut tentang algoritma Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Keterampilan Ekspresi Reguler Java", "Tutorial Struktur Data Java dan Algoritma", "Java Operation Dom Node Skills", "Java File dan Ringkasan Keterampilan Operasi Direktori" dan "Java Cache Skills Ringkasan Keterampilan Operasi Cache" Ringkasan Keterampilan Operasi Java "Ringkasan Keterampilan Operasi Java"
Saya harap artikel ini akan membantu pemrograman Java semua orang.