Java normal ifadede edebi dizeleri negating

oy
4

Yani normal ifadeler mümkün olan en uzun maç maç gibi görünüyor. Örneğin:

public static void main(String[] args) {
    String s = ClarkRalphKentGuyGreenGardnerClarkSupermanKent;
    Pattern p = Pattern.compile(Clark.*Kent, Pattern.CASE_INSENSITIVE);
    Matcher myMatcher = p.matcher(s);
    int i = 1;
    while (myMatcher.find()) {
        System.out.println(i++ + .  + myMatcher.group());
    }
}

çıktı üretir

  1. ClarkRalphKentGuyGreenGardnerClarkSupermanKent

Bu çıktıyı istiyorum

  1. ClarkRalphKent
  2. ClarkSupermanKent

Ben gibi Kalıpları çalışıyorlar:

 Pattern p = Pattern.compile(Clark[^((Kent)*)]Kent, Pattern.CASE_INSENSITIVE);

Bu işe yaramazsa, ama ne söylemeye çalışıyorum ne olduğunu görmek. Ben Kent herhangi oluşumlarını içermiyor Kent Clark dize istiyorum.

Bu dize:

ClarkRalphKentGuyGreenGardnerBruceBatmanKent

çıkış oluştursun

  1. ClarkRalphKent
Oluştur 09/12/2008 saat 22:15
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
6

isteksiz vs açgözlü burada arkadaşıdır.

Deneyin: Clark.+?Kent

Cevap 09/12/2008 saat 22:25
kaynak kullanıcı

oy
4

Bir "isteksiz" yerine "açgözlü" niceleyici istiyorum. Sadece bir koyarak? senin * sonra hile yapmak gerekir.

Cevap 09/12/2008 saat 22:27
kaynak kullanıcı

oy
3

Eğer çalıştığında "Clark[^((Kent)*)]Kent", seni isteyen düşünüyorum "Clark((?!Kent).)*Kent"için sıfır genişlikli negatif görünüm yeşil ışık ( "Look-Around İddialar" başlığına biraz aşağı kaydırma).

Parantezler desen eşleştirme vs karakter eşleme belirtin. Yani, RegExp değil tek bir karakteri bulmaya çalışıyordu (, K, e, n, t, ), *.

Cevap 09/12/2008 saat 22:38
kaynak kullanıcı

oy
2

Relunctant kullanın ?: soneki Clark.*?Kent nicelik ?, *, +tarafından takip edilebilir ?onlar en kısa sürede durdurmak gerektiğini belirtmek için.

görmek http://perldoc.perl.org/perlre.html

Cevap 09/12/2008 saat 22:27
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more