Tengo la siguiente cadena:

"crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

Y estoy tratando de hacer coincidir solo una expresión regular 3P-DC-CRYPTO

Hasta ahora, he logrado escribir la expresión regular a continuación:

crypto_acl = re.findall("address [-\w+]*",output)

Sin embargo, coincide con address 3P-DC-CRYPTO

¿Alguna sugerencia?

1
user5418726 29 oct. 2017 a las 13:56

5 respuestas

La mejor respuesta

Puede usar un mirada positiva detrás (?<=address\s)[-\w+]* para su regex.

2
The fourth bird 29 oct. 2017 a las 10:58

No se necesita expresión regular, en realidad:

string = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

# check for address as well
words = string.split()
if words[-2] == 'address':
    last_word = words[-1]
    print(last_word)

Esto busca address y luego captura la última palabra.

2
Jan 29 oct. 2017 a las 11:18

Puede hacerlo capturando la palabra deseada como esta:

>>> crypto_acl = re.findall("address ([-\w+]*)",output)
>>> crypto_acl
['3P-DC-CRYPTO']

Además, como mencionó en la pregunta que necesita la última palabra de una cadena, simplemente puede hacerlo así, sin buscar explícitamente la palabra después de address:

>>> crypto_acl = re.findall(r"\b([-\w+]+)$",output)
>>> crypto_acl
['3P-DC-CRYPTO']
#or simply 
>>> crypto_acl = output.split()[-1]
>>> crypto_acl
'3P-DC-CRYPTO'

Demostración en vivo aquí

1
Ashish Ranjan 29 oct. 2017 a las 11:05

Puede usar Positiva mirada atrás y capturar el grupo ():

import re
pattern=r"(?<=address )[\w-]+"
string_1="crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"
match=re.finditer(pattern,string_1,re.M)
for i in match:
    print(i.group())
0
Aaditya Ura 29 oct. 2017 a las 12:36

Prueba con la búsqueda de expresiones regulares,

import re

str = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

result = re.search(r'(address .*)', str)

result.group()                          # return as 'address 3P-DC-CRYPTO'


result = re.search(r'address (.*)', str)

result.group()                     #  return as 'address 3P-DC-CRYPTO'
result.group(0)                   #  return as 'address 3P-DC-CRYPTO'
result.group(1)                  #  return as '3P-DC-CRYPTO'
0
Muthuraj S 29 oct. 2017 a las 11:39