2010-04-07 12 views
29

Bir regex uzmanı değilim, ancak isteğim basit: Eşleşen en az 3 veya daha fazla karakter içeren tüm dizeleri eşleştirmem gerekiyor.Normal bir ifadeyi herhangi bir dizeyle eşleştirmek için nasıl kullanırım, ancak en az 3 karakter mi?

Yani örneğin, biz dize "merhaba dünya" ve aşağıdaki ile eşleşen var.

"he" => false // only 2 characters 
"hel" => true // 3 characters match found 
+4

3 veya daha fazla chara dize veya belirli bir pozisyonda cters cters? Tam anlamıyla "herhangi bir üç karakter" bir eşleşme ise, 3 veya daha fazla karakter uzunluğunda bir eşleşme yok mu? Sadece dize uzunluğunu alın ... – dawg

+1

Peki ya hwd', doğru ya da yanlış? – kennytm

+1

"o w" veya "ell" hakkında ne dersiniz? –

cevap

8

bu deneyin {3,} bu yeni hat (\ n) dışında herhangi characher maç olacak

1

Basit 3 nokta ile deneyebilirsiniz. Aşağıdaki perl'de kod bakın

$ a = ~ m /.../ #where $ a Bu piton regex olduğunu dize

39

, ama muhtemelen uygulamak diğer dillerde çalışmaktadır çok.

Sanırım bir karakterin ne olduğunu düşündüğünüze bağlı. harf, sayı, ve alt çizgi varsa:

\w{3,} 

eğer sadece harf ve rakam:

Python da bir dizeden tüm eşleşmeleri döndürmek için bir normal ifade yöntemi vardır
[a-zA-Z0-9]{3,} 

. .NET kullanım için

>>> import re 
>>> re.findall(r'\w{3,}', 'This is a long string, yes it is.') 
['This', 'long', 'string', 'yes'] 
+0

Evet, OP'nin sorduğu sorudan tamamen farklı bir soruya cevap verdim.Paxdiablo'nun çözümünü okuduktan sonra mantıklı. –

+1

Ancak bu tamamen benim sorum oldu, bu yüzden cevapladığınız için teşekkürler! – kiminoa

2

kelimenin başından itibaren eşleştirmek istiyorsanız, kullanım:

\b\w{3,} 

\ b: sözcük sınırı

\ w: sözcük karakteri

{3,}: sözcük karakteri için üç veya daha fazla kez

1

İlk yazının konusu olarak benzer bulmayı denedim. Benim ihtiyaçları için

Sadece

"iokldöajf asd asd KJA wwda da ednm aij < .jkakla alkjwnkmd" Bu

http://answers.oreilly.com/topic/217-how-to-match-whole-words-with-a-regular-expression/

"\b[a-zA-Z0-9]{3}\b" 

3 karakter kelimeleri bulmak

+0

Sorunun altındaki yoruma bakın: "Yanıtlayıcılara: Varyantları. {3,} OP'nin istediği değil." –

+1

Ama yine de soruya cevap vermiyor. En az üç karakter uzunluğunda olması gereken arama ifadesinin kendisi. Örneğin, kullanıcı bir arama iletişiminde yazıyorsa, en az üç karakter girilene kadar eşleşmeleri vurgulamaya başlamamalıdır. OP tüm kelimeler hakkında bir şey söylemedi. –

İlgili konular