SORU
29 EYLÜL 2011, PERŞEMBE


CamelCase veya TitleCase bölmek için düzenli ifade (gelişmiş)

brilliant RegEx bir camelCase veya TitleCase ifadenin bir parçası ayıklamak için buldum.

 (?<!^)(?=[A-Z])

Beklendiği gibi çalışır:

  • değer ->değer
  • - ^camelValue . deve / Değer
  • - ^TitleValue . Başlık / Değer

Örneğin Java: ile

String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
//words equals words = new String[]{"lorem","Ipsum"}

Benim sorunum bazı durumlarda çalışmaz

  • Durum 1: DEĞER ->V / A / L / U / E
  • Durum 2: - ^ eclipseRCPExt . R C tutulma / / / P / Ext

Bence, sonuç olmalıdır:

  • Durum 1: DEĞER
  • Durum 2: tutulma / BIP / Ext

N büyük karakter verilen başka bir deyişle:

  • eğer n karakter küçük harf karakter tarafından takip edilirse, gruplar olmalıdır: (n-1 karakter) / (n-inci alt char karakter)
  • eğer n karakter sonunda grup olmalıdır: (n karakter).

Bu normal ifadenin geliştirmek için nasıl bir fikriniz var mı?

CEVAP
29 EYLÜL 2011, PERŞEMBE


Aşağıdaki normal ifade örnekleri yukarıdaki: herkes için çalışır

public static void main(String[] args)
{
    for (String w : "camelValue".split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])")) {
        System.out.println(w);
    }
}   

Dizenin başında eşleşir göz ardı değil, aynı zamanda bir büyük harf bir büyük harf öncesinde olduğu maçlar göz ardı etmek için negatif geriye ilerleme zorlayarak çalışır. Bu gibi davalara bakan "DEĞER".

Kendi başına düzenli ilk bölümü başarısız "" arasında bölünmüş etmeyerek "" ve "". Ext RPC eclipseRCPExt Bu ikinci fıkra amacı: (?<!^)(?=[A-Z][a-z]. Bu madde küçük harf tarafından izlenen her harf önce bir bölünme, dize başında hariç sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EatingIn

    EatingIn

    12 EKİM 2013
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010