用ply转义正则表达式中的空格?

dol*_*eng 2 python regex whitespace escaping ply

我是否需要在正则表达式中转义单个空格?我知道它的工作原理以下任一方式在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字符串进行任何特殊处理?

Tim*_*ker 5

我不知道ply,但看起来它使用re.VERBOSE选项编译正则表达式,这意味着你需要逃避文字空格或使用\s.

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