J'essaie de faire une recherche entre les listes et de renvoyer la valeur quand elle correspond, et quand ce n'est pas le cas.
Match: brasil Match: argentina Match: chile Not match: canada
Résultat:
Not match: brasil.sao_paulo
Not match: chile
Traceback (most recent call last):
File "main.py", line 7, in <module>
if re.search('\\{}\\b'.format(x), y, re.IGNORECASE):
File "/usr/local/lib/python3.7/re.py", line 183, in search
re.error: bad escape \c at position 0
3 Réponses :
Si vous zippez , vous n'obtiendrez que des correspondances par paires. Compte tenu de la nature de votre recherche, vous pouvez simplement joindre la botte de foin dans une chaîne délimitée par des espaces et joindre les aiguilles dans un motif avec alternance et laisser findall disparaître:
>>> import re >>> needles = ['brasil', 'argentina', 'chile', 'canada'] >>> haystack = ['brasil.sao_paulo', 'chile', 'argentina'] >>> re.findall(r"\b%s\b" % "|".join(needles), " ".join(haystack), re.I) ['brasil', 'chile', 'argentina']
L'intention derrière \\ dans l'expression régulière d'origine n'est pas claire, donc je suppose que vous voulez \ b des deux côtés du modèle.
Si je comprends bien, vous n'avez pas besoin de regex ici.
Match: brasil Match: argentina Match: chile Not match: canada
qui renvoie
group_1 = ['brasil','argentina','chile','canada']
group_2 = ['brasil.sao_paulo','chile','argentina']
for x in group_1:
# For group 2 only, this picks out the part of the string that appears before the first ".".
if x in [y.split('.')[0] for y in group_2]:
print("Match: {}".format(x))
else:
print("Not match: {}".format(x))
Le regex qui échoue est
\ chile \ b. J'imagine que ce n'est pas ce que vous vouliez rechercher.Je voudrais qu'il recherche quel que soit l'ordre du tableau
Exemple: Array 1 -> Line1 == Array2 -> Toutes les lignes
Quel est le but du «\\» initial?
Je suis nouveau sur regex, j'essaie juste de le faire, je suggère le contraire?
Tout d'abord, vous devez utiliser
re.escapepour insérer du code dans votre regex. Deuxièmement, la première barre oblique inverse n'est pas nécessaire (et provoque votre problème), troisièmement, utilisezr '':re.escape (x) + r '\ b'