2010-03-23 29 views
5

Biçimdeki bir dize verilir: XXX999999v99 (X herhangi bir alfa karakteri ve v sayısal bir karakter ve v bir tamsayı karakteridir) eşleşecek bir düzenli ifadeyi nasıl alabilirim v takip eden sayısal karakterler Şimdiye kadar v 'içeren' v \ d \ d 'var ama ideal olarak sadece sayısal kısmı istiyorum.RegEx - Bir metin karakterini izleyerek tüm sayısal karakterleri al

Aynı şekilde, bir dize eşleşecek ve regex'in oluşturulmasını sağlayabileceğiniz bir araç bilen var mıdır? Varolan bir regexin değiştirilmesi bir şeydir ama başım ağrılı acıyla başlamayı buluyorum!

Düzenleme: Bu soruyu yeniden okumanın bir ödev görevi gibi okunduğunun farkındayım! Ancak size temin ederim ki, eşleştirmeye çalıştığım dizeler ürün kodlarına eklenen ürün versiyonlarını temsil ediyor. Geçerli kod, sürüm bölümünü almak için tüm alt yazı ifadelerini kullanır.

cevap

4

Deneyebilirsin:

v(\d+)$ 
  • v: Tek rakamıyla
  • \d+: literal v
  • \d maçları bir veya daha fazla basamak.
  • (): Ayrıca hatırlar gruplama kullanılabilir eşleşti kısmı sonra
  • $: çizgi çapa sonu Bir yakalama grubu kullanmaya gerek
+0

gibi bazı ücretli programlar da vardır. Bunu kaldırmak ve sadece sayısal parçayı döndürmek mümkün mü? Cevabınız için teşekkürler. – Simon

+0

@Simon: Normal ifade bir eşleşme bulduğunda, ilk grup her zaman regex ile eşleşen tam dizeyi içerir. Sadece yakalanan parçayı almanız gerekiyorsa ikinci grubu kontrol etmelisiniz. –

+0

Duh, yeni fark ettim - v karakterini düzenli ifadeden çıkarın! – Simon

2

:

Regex.Match("XXX999999v99",@"v(\d+)").Groups[1].Value 
+0

Dikkat edin, orijinal dizgede eşleşme yoksa, bu kod Gruplara erişmeye çalışırken bir istisna atar [1]. –

1

Regex testi için bazı harika ücretsiz araçlar var.

Dene: regex powertoy

ya: RegExr

Bu maç v karakterini içerir çalıştığınızda regex buddy

+0

RegExr'in çevrimiçi sürümünü kullanıyorum ama devam etmeyi zor buluyorum! – Simon

İlgili konular