J'essaie donc de créer une clause regex où il peut détecter toute combinaison de caractères 'ACTG' et accepter cela comme valide. Bien que toute autre chose - y compris une combinaison de 'ACTG' et d'autres caractères ne soit pas valide.
En fin de compte, je le retirerai de la boucle while, uniquement à des fins de test. À l'heure actuelle, je crois que tant qu'il commence par a, c, t ou g, il dit que c'est valide ...
Y a-t-il une fonction dans regex qui serait mieux adaptée que match?
import re
while (True):
DnaString = str(input('enter your polynucleotide chain code hooblah'))
if (re.match('([ACTG]+[ACTG]*)', DnaString, flags=0)):
#if re.search('^ACTG', DnaString) != -1:
print ("valid chain.")
else: #(re.search('^[ACTG]+[ACTG]*$', DnaString) == -1):
print("invalid chain, please check your input.")
if (DnaString.find("end") != -1):
print("ohokaybye.")
break
3 réponses
Pourquoi pas juste
if all(c in 'ACGT' for c in DnaString):
# Do success
else:
# Do failure
Si vous autorisez une correspondance à répéter en interne des caractères acceptables, cela peut être ce que vous voulez:
'[A|C|T|G]{4}'
Votre problème est que vous recherchez simplement les caractères ACTG n'importe où dans la chaîne sans spécifier que rien d'autre n'est autorisé. Si vous changez votre expression régulière en ^[ACTG]+$
, cela fonctionnera comme prévu. Les caractères ^ et $ sont des ancres qui signifient respectivement le début et la fin de la ligne.
Ainsi, l'expression régulière ci-dessus correspond à une chaîne qui contient un ou plusieurs des quatre caractères et n'autorise aucun autre caractère ni avant ni après.
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.