2010-08-20 28 views

cevap

7

Genellikle -?'u kullanabilirsiniz. Alternatif olarak, -{0,1}'u kullanabilirsiniz ancak ?'un "sıfır veya bir yinelemesi" için hemen hemen her yerde desteklendiğini görmelisiniz. temelde sıfır veya daha fazla tire 12 oluşumları takip etmektedir

-*([0-9]-*){12} 

: Orada her yerde tire herhangi bir sayı ile 12 basamak kabul etmek istiyorsanız

pax> echo 19740103-0379 | egrep '19740103\-?0379' 
19740103-0379 

pax> echo 197401030379 | egrep '19740103\-?0379' 
197401030379 

, sen böyle bir şey yapmak gerekebilir (bir rakam sıfır veya daha fazla tire izledi) ve benzeri harika şeyler her türlü yakalayacaktır:

--3-53453---34-4534--- 

(tabii ki \d kullanmak yerinegerekir Regex motorunuz bunun için destekse. çizgi - -

\d* bir

\d*-\d* biçim basamaklı bir dize eşleşmesi rakamlardan oluşan dizeyle eşleşir

[0-9\-]* sadece çizgilerden oluşan bir dize ile eşleşen rakam ve:

+2

'u kullanabilirsiniz. Bir karakter sınıfında ('[...]' dan kaçmanız yeterlidir. Bir tire, normalde başka bir yerde özel bir anlamı yoktur. – Richard

+0

İyi arama, @Richard, düzeltildi. – paxdiablo

1

Farklı olanları deneyebilirsiniz rakamlar

| (veya) aracılığıyla bunları birleştirebilirsiniz, böylece örneğin (\d*)|(\d*-\d*): formatları eşleşir sadece rakamlar ve rakamlar-tire-rakamlar.