Python 使用ply在正则表达式中转义空白?
我需要在正则表达式中转义一个空格吗?我知道它在Python中有以下两种工作方式:Python 使用ply在正则表达式中转义空白?,python,regex,escaping,whitespace,ply,Python,Regex,Escaping,Whitespace,Ply,我需要在正则表达式中转义一个空格吗?我知道它在Python中有以下两种工作方式:re.compile(r'\s')、re.compile(r')和re.compile(r'\')。因此,似乎可以使用pythonre模块对其进行转义,也可以不转义 但当我试图通过ply.lex为单个空格定义规则时,情况似乎有点不同 ########################## # r'\s' works with ply.lex def t_WHITESPACE(token): r'\s' pass
re.compile(r'\s')
、re.compile(r')
和re.compile(r'\')
。因此,似乎可以使用pythonre模块对其进行转义,也可以不转义
但当我试图通过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
##########################
#r'\s'与ply.lex一起工作
def t_空格(标记):
r'\s'
通过
##########################
#r'\'也起作用
def t_空格(标记):
r'\'
通过
##########################
#r“”不起作用
#引发SyntaxError,消息为“规则't_WHITESPACE'的正则表达式匹配空字符串”
def t_空格(标记):
r“
通过
ply.lex是否对规则的doc字符串进行任何特殊处理?我不知道ply,但这看起来像是使用选项编译正则表达式,这意味着您确实需要转义文本空白或使用
\s
另外,您需要转义散列(
#
),否则以下部分将被解释为注释。是的,我发现在ply源代码中使用了re.VERBOSE!非常感谢你!