Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我很好奇是否有一个正则表达式来查找可打印的输入(由POSIXcharacter class定义[:print:],但也不包含特定字母,例如 letter a。
POSIX
[:print:]
a
这样的表达式将使我能够查找所有可打印的字符,然后执行其他排除。我最初的想法是使用嵌套字符类来实现这一点,但我认为这不会奏效。
这是针对我正在研究的小型解析器的lex——感谢您的任何反馈。
lex
flex (如果你可以使用它)提供了{-}提供你正在寻找的东西的运营商:
{-}
[[:print:]]{-}[a]
它也有一个{+}操作符。不过,它们只适用于字符类。
{+}
在 PCRE 和其他具有环视功能的引擎中,您可以使用它(例如[[:print:]](?<!a)),但除非它最近发生了变化,否则lex不支持环视。
[[:print:]](?<!a)
虽然可能有一些方法可以在词法分析器中进行这种区分,但在解析逻辑中这样做可能更清晰。