2

我需要在正则表达式中转义一个空格吗?我知道它在 Python 中可以通过以下任一方式工作re.compile(r'\s')re.compile(r' ')re.compile(r'\ '). 因此,您似乎可以使用 Python re 模块逃避它或不逃避它。

但是当我试图通过 ply.lex 为单个空格定义规则时,事情似乎有点不同。

##########################
# r'\s' 适用于 ply.lex
def t_WHITESPACE(令牌):
  r'\s'
  经过

##########################
# r'\' 也可以
def t_WHITESPACE(令牌):
  r'\'
  经过

##########################
# r' ' 不起作用
# 引发 SyntaxError 并显示消息“规则 't_WHITESPACE' 的正则表达式匹配空字符串”
def t_WHITESPACE(令牌):
  r''
  经过

ply.lex 是否对规则的文档字符串进行任何特殊处理?

4

1 回答 1

5

我不知道 ply,但这看起来像是使用re.VERBOSE选项编译正则表达式,这意味着您确实需要转义文字空格或使用\s.

此外,您需要转义哈希 ( #),否则以下部分将被解释为注释。

于 2012-04-25T08:20:09.793 回答