2009-09-11 21 views

cevap

291
[^,;]+   

Kullandığınız normal ifadeyi belirtmediniz. Bunların birçoğunda sınırlayıcıları alan ve bunları bölen bir Split yöntemi vardır.

[,;]+ 
+6

Ve soru, komşu ayırıcılar izin verilip verilmeyeceğini belirtmez yüzden sondaki '+' biraz şüpheli. –

+0

Yalnızca noktalı virgülle ilgili bir hata alınıyor - sonlandırılmamış regexp dosyanın sonunu karşılar – Jaswinder

54

Kullanım karakter sınıfları: Bir (^ olmadan) "normal" karakter sınıfıyla o birini kullanmak isteyebilirsiniz. Caret ile başlayan bir karakter sınıfı, sınıfta olmayan herhangi bir şeyle eşleşir.

[^,;] 
+1

[Negatif karakter sınıfları] hakkında daha fazla bilgi (http://www.regular-expressions.info/charclass.html) – HEX

2

bunu kullanın:

([^,;]*[,;])* 
+4

Bu, virgül veya virgül gibi Bir alan ayırıcısı yerine bir alan sınırlayıcısı. Fark, 'hat' (veya diğer taranmış kayıt yapısı) sonunda önemlidir; Genellikle, son alandan sonra virgül veya yarı-kolonda ısrar etmek istemezsiniz. senin regex motoru yeterince güçlü ise, ' '|' (: ([^ ,;] *) ([^ ,;] $)??) kullanabilirsiniz (non-yakalama parantez ile PCRE). Alandan veya kayıt bitiminden sonra virgül veya yarı kolonun alternatifleri, işleri daha iyi bir hale getirir. Boş alanlara izin verilip verilmediğini de göz önünde bulundurun. –

+1

Son olarak, yakalananlar tarafından gerçekte ne döndüğüne dair endişelenmeniz gerekiyor - gerçekten ayırıcıların dahil edilmesini istiyor muydunuz ve bir satırda 10 alan varsa, yakalama notasyonu ile kaç tanesi döndürülüyor. –

+1

Sen sağ yaklaşık tüm bu ama konser cevabım bu şeyi yoktu sebebi sorgulayıcı soruyor RegEx'in hangi dil/kütüphane bilmiyorum olmasıdır. "GREP" kullanıyor olabilir. Her neyse, bu yorumları ekleyip, onun için her şeyi temizlemenizi rica ediyorum. : D – NawaMan

İlgili konular