2010-11-15 8 views
1

Je suis confronté à un problème d'expression régulière en Python. Le problème est que "Avoir à vérifier une liste et avoir à trouver de l'espace contenant des chaînes." Le code est:Expression régulière pour vérification

def testFunction(self, func): 
     a = re.findall(r'\w+[\ ]*\(.*?\)', func) 
     j = len(a) 
     print j 
     if j<=1: 
      return True 

     else: 
      s = re.findall(r"function *()", func) # cheking 
      t = len(s) # calculating the lenth 
      if t<=0: 
       return True 
      else: 
       return False 

Il retourne tout le temps vrai s'il y a un écart ou ne. Exemple: il détecte à la fois "test()" & "test()" Avec en un mot je cherche une expression régulière, il va chercher l'écart dans une chaîne.Il ne détectera que "test()" pas " test() » J'ai essayé avec regex = r '\ w + [\] (.?)' regex = r^\ s * ' , mais malheureusement, ne fonctionne pas. Le travail peut être effectué par une expression régulière qui différera entre test (arg1) & test (arg1). Merci.

+0

Si "l'espace" et non "espace blanc", pourquoi ne pas ' l = ["ab", "c", "de"]; [x pour a dans l si a.find ("")! = -1] '? – khachik

Répondre

2

si tout ce que vous souciez est de savoir s'il y a des espaces, pourquoi ne pas simplement faire quelque chose comme

return " " in func 
2

que diriez-vous r'.*\s+.*'

+0

Cela ne fonctionne pas sur Unicode, n'est-ce pas? – tchrist

2

[\] * correspond à zéro ou plusieurs occurrences d'espace . Essayez [\] + à la place

+0

Que diable est [\] 'supposé être? Ne pourriez-vous pas obscurcir ça? ☹ – tchrist

1
re.findall(r"function\ *\(\)", func) 
0

HI, Je l'ai fait par

def testFunction(self, func): 
     #this function looks for a "function",looks for "function" both with and without parameter & with parameter 
     a = re.findall(r'\s', func) 
     j = len(a) 
     if j<=1: 
      return True 
     else: 
       return False 

Merci beaucoup :)

+0

Cela ne fonctionne pas sur Unicode, n'est-ce pas? – tchrist

+0

Son travail sur unicode :) – mushfiq