Pertanyaan Ekspresi Reguler dan GWT


Pertanyaan saya adalah: Apakah ada solusi yang baik untuk menggunakan ekspresi reguler di GWT?

Saya tidak puas dengan penggunaan String.split (regex) misalnya. GWT menerjemahkan Kode ke JS dan kemudian menggunakan regex sebagai JS regex. Tapi saya tidak bisa menggunakan sesuatu seperti Java Matcher atau Java Pattern. Tapi saya akan membutuhkan ini untuk pencocokan grup.

Apakah ada kemungkinan atau perpustakaan?

Saya mencoba Jakarta Regexp, tetapi saya memiliki masalah lain karena GWT tidak meniru semua metode Java SDK yang digunakan perpustakaan ini.

Saya ingin dapat menggunakan sesuatu seperti ini di sisi klien:

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();

if (matchFound) {
    // Get all groups for this match
    for (int i=0; i<=matcher.groupCount(); i++) {
        String groupStr = matcher.group(i);
        System.out.println(groupStr);
    }
} 

75
2017-07-21 23:14


asal


Jawaban:


Kode yang sama menggunakan RegExp bisa jadi:

// Compile and use regular expression
RegExp regExp = RegExp.compile(patternStr);
MatchResult matcher = regExp.exec(inputStr);
boolean matchFound = matcher != null; // equivalent to regExp.test(inputStr); 

if (matchFound) {
    // Get all groups for this match
    for (int i = 0; i < matcher.getGroupCount(); i++) {
        String groupStr = matcher.getGroup(i);
        System.out.println(groupStr);
    }
}

89
2017-10-24 08:35



GWT 2.1 sekarang memiliki RegExp kelas yang mungkin memecahkan masalah Anda:


32
2017-10-29 20:23



Jawaban ini mencakup SEMUA kecocokan pola, tidak hanya satu, seperti dalam jawaban lain di sini:

Fungsi:

private ArrayList<String> getMatches(String input, String pattern) {
    ArrayList<String> matches = new ArrayList<String>();
    RegExp regExp = RegExp.compile(pattern, "g");
    for (MatchResult matcher = regExp.exec(input); matcher != null; matcher = regExp.exec(input)) {
       matches.add(matcher.getGroup(0));
    }
    return matches;
}

... dan contoh penggunaan:

ArrayList<String> matches = getMatches(someInputStr, "\\$\\{[A-Za-z_0-9]+\\}");
for (int i = 0; i < matches.size(); i++) {
    String match = matches.get(i);

}

18
2017-11-28 12:41



Jika Anda menginginkan solusi GWT murni, saya tidak yakin itu bisa dilakukan. Tetapi jika Anda ingin menggunakan JSNI, Anda dapat menggunakan objek RegExp JavaScript untuk mendapatkan grup yang cocok dan semua. Anda harus mempelajari JSNI untuk GWT dan objek RegExp JavaScript.


3
2017-07-22 10:36



Itu Pustaka GWTx tampaknya memberikan emulasi java.util.regex.Pattern dan teman-teman. Itu tidak terlihat lengkap (Matcher khususnya), tetapi mungkin menjadi awal yang baik.

Teknik yang mereka gunakan untuk memasang implementasi mereka sendiri kelas Java untuk sisi klien adalah <super-source> deklarasi dalam modul XML. Ini disebutkan dalam dokumen GWT, deskripsi format XML modul di bawah "Mengganti satu paket implementasi dengan yang lain". Kelas-kelas standar JRE yang diterjemahkan di GWT diemulasikan dengan cara yang sama.


0
2017-07-24 10:09