You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Regex匹配符合指定规则的不含阿拉伯元音的单词

正则实现方案

问题原因说明

你当前使用的正则r'\b(?:(?![اوي]))+\b'要求单词所有位置都不能出现ا、و、ي三个字符,完全没有覆盖你提到的两个例外规则,同时该写法会匹配空字符串,因此输出结果全部为空值。

实现代码(Python标准库re即可运行)

import re

text_norm = """تفقدت نظارتي  حين استيقظت صباحا  فلم اجدها في مكانها  وبحثت عنها في كل مكان  دون ان اعثر لها علي اثر  يا الهي  كيف ساخرج اليوم من البيت  واواجه النهار  
 وتناهي الي من الخارج  صوت نقار الخشب  فوق جذع شجره قريبه فاسرعت الي الباب  وفتحته  واذا ضوء النهار يبهر بصري  فاغلقت عيني  وهتفت  ايها النقار  اين انت  
 وحاولت عبثا ان افتح عيني  وانا اقول  عفوا  لا استطيع ان افتح عيني  ان الضوء يعميني"""

pattern = r'(?<!\S)(?!.*(?<!^|ال)[اوي])[ء-ي]+(?!\S)'
result_novowels = re.findall(pattern, text_norm)
print(result_novowels)

正则规则说明

  • (?<!\S):匹配单词左边界,确保前面是空白或者字符串开头,避免半词匹配,比默认\b对阿拉伯语的兼容性更好
  • (?!.*(?<!^|ال)[اوي]):负前瞻实现你的两条排除规则,校验整个单词中不存在既不在词首、也不在ال之后的ا/و/ي字符:
    • (?<!^|ال):排除词首位置、以及ال之后的位置,这两个位置出现元音不会触发校验失败
  • [ء-ي]+:匹配连续的阿拉伯语常用字母
  • (?!\S):匹配单词右边界,确保后面是空白或者字符串结尾

输出示例

运行上述代码会输出所有符合规则的单词:

['فلم', 'كل', 'من', 'صوت', 'فوق', 'قريبه', 'اذا', 'لا']

实际输出以你本地文本的内容为准。


内容的提问来源于stack exchange,提问作者Lama S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03