2013-10-09 22 views
14

Karakterlerden boşluklarla başlayan çizgilerle eşleşen düzenli bir ifade yazmaya çalışıyorum (-) VEYA boşluk veya sekmelerle başlayan ve sonra bir tire işareti bulunan. aşağıdaki uymalıdır Yani:Belirli bir karakterle başlayan VEYA boşluk karakteriyle başlayan Normal İfade eşleşme çizgileri ve ardından bu karakter

- hello! 
      - hello! 

İşte ben bugüne kadar bu var: ^(\-). Ancak bu, yukarıdaki ikinci örnekle eşleşmiyor çünkü ilk karakterin tire olması gerekiyor.

cevap

25

Deneyebilirsin

^\s*- 
  • ^: dize
  • başlangıcı
  • \s*: Sıfır veya daha fazla boşluk karakterleri
  • -
  • : bir hazır - (bir dış Bu kaçış gerekmez karakter sınıfı)
+0

Hem çözüm hem de açıklama için teşekkürler. – maxedison

4

Y'nin |

^\s*- 
+0

Örneğe göre, önde bir taneden fazla boşluk karakteri olabilir. – arshajii

+0

Evet, düzenlenmiş. – anubhava

0

yukarıdaki (\ s kullanarak *) Bu durumda en kolay biri, ancak genel olarak, her zaman kullanabilirsiniz: ou 0 veya daha fazla boşluk başında opsiyonel maç yaparak bu normal ifadeler kullanabilirsiniz sözdizimi: - Başlangıçta, `de^\ s + -

re.match('^-|^\s+-', '- hello') 
<_sre.SRE_Match object at 0x0000000054E72030> 

re.match('^-|^\s+-', '  - hello') 
<_sre.SRE_Match object at 0x0000000054E72030> 

re.match('^-|^\s+-', '  + hello') 
None 

^- için böyledir' bir veya daha fazla boşluk ve birlikte olduğu | birini seçer.

+0

Ama niçin '\ s *'? – arshajii

+0

bu durumda olmazdı, fakat sorunun ne şekilde ifade edileceğinden dolayı, bu VEYA'nın, bu özel çözümün ele almayı başaramayacağı ile ilgili genel bir soruya da eğilebilir. Her neyse, kendi özel problemi için sizinki daha basit bir çözümdür. –

İlgili konular