正規表現で単一の空白をエスケープする必要がありますか? 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' ' は機能しません # 「ルール 't_WHITESPACE' の正規表現は空の文字列に一致します」というメッセージとともに SyntaxError が発生しました def t_WHITESPACE(トークン): r' ' 合格
ply.lex は、ルールのドキュメント文字列で特別な処理を行いますか?