2016-03-26 13 views
0

Birisi neden regex ifadesinin regex ifadesi için tatmin olmuyor bana açıklayabilir. Birisi nasıl üstesinden geleceğimi ve [] maçı nasıl kontrol edeceğimi bilmeme izin verebilir. Açık ve kapalı parantez kaldırırsanızPython re.search açık ve yakın ayraç aramak için arama []

>>> str = li= "a.b.\[c\]" 
>>> if re.search(li,str,re.IGNORECASE): 
... print("Matched") 
... 
>>> 
>>> str = li= r"a.b.[c]" 
>>> if re.search(li,str,re.IGNORECASE): 
... print("Matched") 
... 
>>> 

Ben Sen a.b.[c] yerine dize a.b.\\[c\\] maç için çalışıyorsunuz

>>> str = li= 'a.b.c' 
>>> if re.search(li,str,re.IGNORECASE): 
... print("matched") 
... 
matched 
+0

yapmayın kullanmak 'o gölge gibi bir değişken adı olarak str' yerleşik [str] (https://docs.python.org/3/library/stdtypes.html#str) – idjaw

cevap

4

maç olsun.
bu deneyin:

import re 
li= r"a\.b\.\[c\]" 
s = "a.b.[c]" 
if re.search(li, s, re.IGNORECASE): 
    print("Matched") 

re.IGNORECASE arada burada gerekli değildir.

+0

@ WiktorStribiżew Bitti, teşekkürler :-) – Bharel

+0

Ayrıca noktadan kaçmalı mıyım? –

+0

@Bhaskarvedula Noktadan kaçmak iyi bir fikir çünkü '.' bir şeyle eşleşecek ve \ 'sadece bir'.' Ile eşleşecektir. Bu bir zorunluluk değil, sadece daha doğru bir hale getiriyor. – Bharel

0

Aşağıdaki kodu deneyebilirsiniz:

import re 
str = "a.b.[c]" 
if re.search(r".*\[.*\].*", str): 
    print("Matched") 

Çıktı:

Matched