# Regular Expressions (parte 2)

Supondo que os usuários devem enviar uma URL ou 🔗link para compartilhar seus nomes de usuário 👤. Bora usar o regex para selecionar somente o usuário ao invés da URL toda, para isso há um exemplo de URL como base: `https://twitter.com/fulano001` 👇:

```python
url = input("URL:").strip()
usuario =  url.replace("https://twitter.com/", "")
print(f"Usuario: {usuario}")
```

```plaintext
URL:https://twitter.com/fulano001
Usuario: fulano001
```

Há outros métodos ou funções para remover partes específicas de um texto:

```python
url = input("URL:").strip()
usuario = url.removeprefix("https://twitter.com/")
print(f"Usuario: {usuario}")
```

Existe algumas limitações desse 👆 código, por exemplo, o usuário escrever a URL usando '`www.`' ou protocolo '`http:`', existe uma função `sub()` no módulo regex que seleciona um padrão e substitui 🔄 por outro padrão, no seguinte exemplo, vai selecionar o padrão e substituir por um espaço, então vai "apaga-lo" 👇:

```python
import re

url = input("URL:").strip()
                #sub(padrão,substitui,texto)
usuario = re.sub(r"^(https?://)?(www\.)?twitter\.com", "", url)
print(f"Usuario: {usuario}")
```

No anterior 👉[post](https://hashnode.com/post/clrzsg3z5000008id5jsm26yu) há uma lista de alguns padrões, o uso de `(...)` serve para agrupar caracteres ou capturar padrões e o uso de `(?: ...)` serve para não capturar padrões e sim agrupar padrões, bora entender 👇:

```python
import re

url = input("URL:").strip()
busca = re.search(r"^https?://(www\.)?twitter\.com\(\w+)$", url, re.IGNORECASE)
if busca:
    print(f"Usuario:", busca.group(2))  # grupo dois
```

Perceba que nesse 👆 código, na busca há dois grupos `(www\.)` e `(\w+)`, obs: no regex a contagem começa no número 1. E podemos excluir a captura de grupo usando `(?:)`

```python
import re

url = input("URL:").strip()
busca = re.search(r"^https?://(?:www\.)?twitter\.com\(\w+)$", url, re.IGNORECASE)
if busca:
    print(f"Usuario:", busca.group(1)) #grupo 1, so existe ele.
```

## Walrus

O operador 🦭 "**walrus**" (`:=`) é uma adição introduzida no Python 3.8 que permite atribuir um valor a uma variável como parte de uma expressão. Isso é especialmente útil em situações em que você precisa avaliar uma expressão e, ao mesmo tempo, 🗄️ armazenar o resultado em uma variável para uso posterior.

```python
import re

url = input("URL:").strip()
if busca := re.search(r"^https?://(?:www\.)?twitter\.com\(\w+)$", url, re.IGNORECASE):
    print(f"Usuario:", busca.group(1))
```
