是否可以通过正则表达式检查一个单词是否真的是英语单词?

jas*_*cks 1 regex nlp

当我说英语时,我真正的意思是与 gobbledy gook 相对。我并不是想过滤掉领班或西班牙语或其他什么。

所以基本上我想测试一个单词是否完全由可发音的音节组成。

所以这是一个正则表达式:

if re.match(r'^([^aeiouy]{1,3}[aeiouy]{1,3}[^aeiouy]{1,3}|[aeiouy]{1,3}[^aeiouy]{1,3})+
    print "gobbledy gook!!!"
Run Code Online (Sandbox Code Playgroud)

检查什么:C=辅音 V=元音

CVC 或 VC 字符组。组的长度为 1-3 个字符

这有意义吗?,the_word) 是 None: xCodexBlockxPlacexHolderx

检查什么:C=辅音 V=元音

CVC 或 VC 字符组。组的长度为 1-3 个字符

这有道理吗?

Nat*_*ggy 5

是和不是。从某种意义上说,这是可能的;这些评论给出了一种简单的(而且极其冗长和缓慢)的方式来做到这一点。但至于滥用 regexen 来完成这项任务是否有任何意义呢?。有效单词之间的差异太大,甚至您正在执行的弱验证(没有尝试处理“rong”等看似合理但错误的单词)也将需要绝对不切实际的自定义来完成这项工作。

这类问题就是为什么JWZ (Jamie Zawinski) 说

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。