Como validar com regex uma string contendo apenas letras, espaços em branco e letras com acento?

Para validar uma string que contém apenas letras, espaços em branco e letras com acento utilizando uma expressão regular (regex), você pode usar o seguinte padrão:

^[\p{L}\s]+$

Vamos analisar o padrão:

  • ^ indica o início do texto.
  • [\p{L}\s] define uma classe de caractere que corresponde a letras e espaços em branco.
  • + indica que a classe de caractere pode ocorrer uma ou mais vezes.
  • $ indica o final do texto.

A classe de caractere [\p{L}\s] é responsável por corresponder a todas as letras (com ou sem acento) e espaços em branco. A notação \p{L} é uma classe Unicode que corresponde a qualquer letra, incluindo letras com acento.

Aqui está um exemplo de código em Python que realiza a validação:

import re

def validar_string(texto):
    padrao = r'^[\p{L}\s]+$'
    if re.match(padrao, texto):
        return True
    return False

texto_valido = "Olá mundo! É um dia ensolarado."
texto_invalido = "12345@#$"

print(validar_string(texto_valido))
print(validar_string(texto_invalido))

A saída desse código será:

True
False

No exemplo acima, a função validar_string recebe uma string como entrada e utiliza a função re.match do módulo re para verificar se o padrão corresponde à string completa. Se a correspondência for encontrada, a função retorna True, indicando que a string é válida. Caso contrário, retorna `False’, indicando que a string é inválida.