0
votes

Comment construire regex pour trouver des mots commençant par `\ n` et lettre et fin avec le chiffre ou le mot?

Voici un exemple de chaîne, l'espacement après que le chiffre pourrait être différent.

re.findall(r'\n(\w+\w$))', product_list)


0 commentaires

3 Réponses :


0
votes

Cet exemple peut être effectué sans regex, divisé sur : , puis \ n xxx


0 commentaires

1
votes

L'approche du script ci-dessous consiste à éliminer d'abord le principal terme Terme: \ n code> dans ce cas Acheter: \ n code>. Ensuite, nous utilisons re.findall code> avec le modèle suivant pour rechercher toutes les correspondances:

product_list = 'Buy:\n Milk \nYoughurt 4 \nBread  \nSausages 4     \nBanana '
product_list = re.sub(r'^[^\s]*\s+', '', product_list)

matches = re.findall(r'(.+?)\s*(?:\n|$)', product_list)
print(matches)

['Milk', 'Youghurt 4', 'Bread', 'Sausages 4', 'Banana']


2 commentaires

Que fait le premier '?' dans (. +?) \ s * (?: \ n | $) moyenne?


Oh je comprends. Le +? est un opérateur non gourmand qui s'arrête lorsqu'il trouve un premier \ s . docs.python.org/2/library/re.html# Syntaxe d'expression régulière



1
votes

Je suggère d'utiliser une non-regex (une regex semble chère), si vous pouvez garantir un modèle similaire d'entrée: xxx

code : xxx


3 commentaires

Pourquoi ne voudriez-vous pas utiliser la bibliothèque d'expression régulière?


@DanielButler, parce que cela semble pouvoir fonctionner sans une bibliothèque supplémentaire. Mais oui, dépend de l'entrée.


Ok je ne savais pas si je manquais quelque chose