2012-04-25 24 views
2

正規表現で1つの空白をエスケープする必要がありますか?私はそれがPythonで次のいずれかの方法で動作することを知っています:re.compile(r'\s')re.compile(r' ')およびre.compile(r'\ ')。したがって、Python reモジュールでエスケープするかどうかは分かりません。正規表現の空白をplyでエスケープしますか?

しかし、私がply.lexを使って1つの空白のルールを定義しようとしていたときに、少し違っているようです。

 
########################## 
# 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ていますか?

答えて

5

プライはわかりませんが、re.VERBOSEオプションを使用して正規表現をコンパイルすると、リテラル空白をエスケープするか、\sを使用する必要があります。

また、ハッシュ(#)をエスケープする必要があります。そうしないと、次の部分がコメントとして解釈されます。

+0

はい、プライズソースコードでre.VERBOSEを使用しています。どうもありがとうございました! – dolaameng

関連する問題