我需要转义正则表达式中的单个空格吗?我知道它在Python中可以通过以下任一方式工作:re.compile(r'\s')
、re.compile(r' ')
和re .compile(r'\')
。所以看来你可以使用Python re模块来逃避它,也可以不逃避它。
但是当我尝试通过 ply.lex 为单个空格定义规则时,情况似乎有点不同。
########################## # r'\s' works with ply.lex def t_WHITESPACE(token): r'\s' pass ########################## # r'\ ' also works def t_WHITESPACE(token): r'\ ' pass ########################## # r' ' DOES NOT work # A SyntaxError was raised with the message "Regular expression for rule 't_WHITESPACE' matches empty string" def t_WHITESPACE(token): r' ' pass
ply.lex 是否对规则的 doc 字符串进行任何特殊处理?
最佳答案
我不知道 ply,但这看起来像是使用 re.VERBOSE
编译正则表达式选项,这意味着您确实需要转义文字空白或使用 \s
。
此外,您需要转义哈希值 (#
),否则以下部分将被解释为注释。
关于python - 用 ply 转义正则表达式中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10311827/