如何在正则表达式中检测阿拉伯语单词的单词边界 - Python
How to detect word boundary in regex for Arabic words - Python
我正在尝试删除任何可能包含非阿拉伯字符的词。因此,应该删除 ذهb
或 word
这样的词。
我已经使用以下正则表达式成功删除了非阿拉伯字符:
re.sub(r'([^،-٩]+)',' ', 'ذهb')
但是我怎样才能删除整个单词呢?在正则表达式前面加上 \b
似乎不起作用。
您可能想试试 ascii_letters。这应该有效。
import string
text = "".join([char for char in text if char not in string.ascii_letters]).strip()
return text
你可以使用
re.sub(r'\s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\b', '', text)
\s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\b
匹配
\s*
- 零个或多个空格
\b
- 单词边界
[\u0621-\u064A]*
- 零个或多个阿拉伯字母
[^\W\d_\u0621-\u064A]
- 除了阿拉伯字母之外的任何 Unicode 字母
[^\W\d_]*
- 任意零个或多个 Unicode 字母
\b
- 单词边界
我正在尝试删除任何可能包含非阿拉伯字符的词。因此,应该删除 ذهb
或 word
这样的词。
我已经使用以下正则表达式成功删除了非阿拉伯字符:
re.sub(r'([^،-٩]+)',' ', 'ذهb')
但是我怎样才能删除整个单词呢?在正则表达式前面加上 \b
似乎不起作用。
您可能想试试 ascii_letters。这应该有效。
import string
text = "".join([char for char in text if char not in string.ascii_letters]).strip()
return text
你可以使用
re.sub(r'\s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\b', '', text)
\s*\b[\u0621-\u064A]*[^\W\d_\u0621-\u064A][^\W\d_]*\b
匹配
\s*
- 零个或多个空格\b
- 单词边界[\u0621-\u064A]*
- 零个或多个阿拉伯字母[^\W\d_\u0621-\u064A]
- 除了阿拉伯字母之外的任何 Unicode 字母[^\W\d_]*
- 任意零个或多个 Unicode 字母\b
- 单词边界