Cómo detectar el límite de la palabra en expresiones regulares para palabras árabes - Python

Estoy tratando de eliminar cualquier palabra que pueda contener caracteres no árabes. Por lo tanto, las palabras como ذهb o worddeben eliminarse.

Logré eliminar los caracteres no árabes usando la siguiente expresión regular:

re.sub(r'([^،-٩]+)',' ', 'ذهb')

Pero, ¿cómo eliminaría la palabra completa? Preceder a la expresión regular con \bno parece funcionar.

Answer

Puedes usar

re.sub(r'\s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\b', '', text)

los \s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\bpartidos

  • \s* - cero o más espacios en blanco
  • \b - un límite de palabra
  • [\u0621-\u064A]* - cero o más letras árabes
  • [^\W\d_\u0621-\u064A] - cualquier letra Unicode pero letra árabe
  • [^\W\d_]* - cualquier cero o más letras Unicode
  • \b - un límite de palabra

Es posible que desee probar ascii_letters. Esto debería funcionar.

import string

text = "".join([char for char in text if char not in string.ascii_letters]).strip()
return text