如何从一组模式中排除不需要的模式?
问题描述:
我刚刚开始使用lex编程。第一项任务是从文件中分离元音和辅音。我写的元音规则是 - [ aeiouAEIOU ] {return VOWEL};
对于辅音来说,编写代码将会非常繁琐 - [b-dB-D.....]
。有没有类似{alphabets} - {unwanted chars}
的方法?如何从一组模式中排除不需要的模式?
答
是的,有(在弯曲,不能在其他法实现):
[[:alpha:]]{-}[aeiouAEIOU]
您也可以使用不区分大小写的模式:
(?i:[[:alpha:]]{-}[aeiou])
的{-}
运营商只能用文字工作类。它不适用于宏定义或多字符子模式。 (当flex尝试解析模式时,这些会产生语法错误。)
有关更多信息,请参阅flex manual chapter on patterns。