我使用正则表达式来识别.tex
文件中包含\begin{frame}
的行。以下是我的代码:
#!/usr/bin/python
import re,sys
def isEven(num):
res = [False,True][bool(num % 2 == 0)]
return res
textin = open(sys.argv[1]).readlines()
nline = 0
pat = r'\b\begin{frame}\b'
for line in textin:
line = line.strip(' ')
#print 'Test: ',line[:13]
if re.match(pat,line):
print 'here'
nline += 1
if isEven(nline):
print '%',line.strip('\n')
else:
print line.strip('\n')
这个程序的目的是在tex文件的行之前添加字符“%”,如果帧数是偶数。换句话说,我想对幻灯片编号为偶数的幻灯片进行注释。
你知道这个图案有什么问题吗?在
再看看你的图案串:
注意它以'\b\b'开头。你的意思是第一个作为词的边界,第二个作为你想要匹配的部分,但是
re
怎么可能猜出你每一个的意思?!在我不认为你需要词的边界,顺便说一句,他们可能会搞乱匹配。而且,
re.match
只在开头匹配;因为在Q的文本中,您说的是“contain”,而不是“start with”,所以实际上您可能想要re.search
。在要匹配反斜杠,需要在模式中加倍。你可以用一个反斜杠来转义标点符号,比如大括号。在
所以我建议…:
^{pr2}$我已经做了一些改进,但是它们与你的Q没有直接关系(例如,使用
with
打开文件,逐行循环;完全剥离每行空白,一次,而不是分期付款;等等,但是你没有使用任何这些:-). 在相关问题 更多 >
编程相关推荐