2012-04-25 79 views
2

我是否需要在正則表達式中跳過單個空格?我知道它可以在Python中以下方式使用:re.compile(r'\s'),re.compile(r' ')re.compile(r'\ ')。所以看起來你可以用Python re模塊逃避或不使用它。使用ply正則表達式逃避空格?

但是,當我試圖通過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讓與規則的文檔字符串任何特殊處理?

回答

5

我不知道ply,但是這看起來像使用re.VERBOSE選項編譯正則表達式,這意味着您需要轉義字面空格或使用\s

另外,您需要轉義散列(#),否則以下部分將被解釋爲註釋。

+0

是的,我找到了使用re.VERBOSE的ply源代碼!非常感謝你! – dolaameng 2012-04-25 08:32:25