具有否定的POSIX字符类

时间:2012-09-25 21:45:23

标签: regex lex

我很好奇是否有正则表达式查找可打印的输入(由POSIX字符类[:print:]定义,但也不包含特定字母,例如字母a

这样的表达式使我能够查找所有可打印的字符,然后执行其他排除。我最初的想法是使用嵌套的字符类来实现这一点,但我不相信这会起作用。

这是我在lex工作的小型解析器 - 感谢您的反馈。

2 个答案:

答案 0 :(得分:1)

flex(如果你可以使用它)提供了{-}运算符,它提供了你正在寻找的东西:

 [[:print:]]{-}[a]

它还有一个{+}运算符..但它们只适用于字符类。

答案 1 :(得分:0)

在PCRE和其他具有环视功能的引擎中,您可以使用它(例如[[:print:]](?<!a)),但除非最近更改,lex不支持环视。

虽然有可能在词法分析器中进行区分,但在解析逻辑中这样做可能更为清晰。