我很好奇是否有正则表达式查找可打印的输入(由POSIX
字符类[:print:]
定义,但也不包含特定字母,例如字母a
。
这样的表达式使我能够查找所有可打印的字符,然后执行其他排除。我最初的想法是使用嵌套的字符类来实现这一点,但我不相信这会起作用。
这是我在lex
工作的小型解析器 - 感谢您的反馈。
答案 0 :(得分:1)
flex(如果你可以使用它)提供了{-}
运算符,它提供了你正在寻找的东西:
[[:print:]]{-}[a]
它还有一个{+}
运算符..但它们只适用于字符类。
答案 1 :(得分:0)
在PCRE和其他具有环视功能的引擎中,您可以使用它(例如[[:print:]](?<!a)
),但除非最近更改,lex
不支持环视。
虽然有可能在词法分析器中进行区分,但在解析逻辑中这样做可能更为清晰。