我经常使用萨格泰克斯,这是用 python 编写的。
包中的脚本之一定义了一个如下变量:
ignore = r"^( _st_.goboom|print 'SageT| ?_st_.current_tex_line)"
然后该脚本使用re.find
如下:
re.search(ignore, line)
最近,为了准备切换到 python 3,该ignore
变量更改为
ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))"
由于某种原因,此更改导致我的某些文档出现问题。
ignore
我的问题是:如果要在 中使用变量,这两个定义之间有什么区别吗re.search
?
显然,如果我可以发布为什么这会给我带来问题,那将会很有用,但是脚本有点长,而且我正在使用该脚本的项目也很长。
简而言之:脚本使用 的第一个定义返回正确的结果ignore
,并且脚本始终False
使用 的第二个定义返回ignore
。
我希望有一个明显的原因导致这两种定义导致ignore
不同的行为。
答案1
更新后的正则表达式缺少先前正则表达式所具有的空间。
ignore = r"^( _st_.goboom|print 'SageT| ?_st_.current_tex_line)"
ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))"
我认为想要的只是
ignore = r"^( _st_.goboom|print ('SageT| ?_st_.current_tex_line))"
就解释而言......通常,正则表达式中的空格是文字字符。
现在,我承认,这可能是变化本身。你从说你要忽略
" _st_.goboom"
"print 'SageT"
"_st.current_tex_line"
" _st.current_tex_line"
忽略
" _st_.goboom"
"print 'SageT"
"print '_st.current_tex_line"
"print ' _st.current_tex_line"
(注意:正则表达式中的所有“.”字符也匹配任何字符,但我不想有 258 * 6 行左右的行来准确解释哪些模式被忽略。)