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

  • FF Radio

    FF Radio

    16 Mayıs 2008
  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006