我正在尝试制作一个能识别micro dvd格式的简单正则表达式:
{52}{118}some text
{123}{202}some text
{203}{259}some text
{261}{309}some text
我的代码看起来如下。 match_obj
为无,我不知道原因:
import re
my_re = r"\{([0-9]*)\}\{[0-9]\}(.*)"
f = open('abc.txt')
match_obj = re.match(my_re, f.readline())
我也试过了:
match_obj = re.match(my_re, f.readline(), re.M|re.I)
具有相同的结果。
答案 0 :(得分:3)
你非常接近 - 你只是错过了第二个数字部分的重复符号。你的正则表达式应该是这样的:
my_re = r"\{([0-9]*)\}\{[0-9]*\}(.*)"
注意第二个[]
阻止后添加的星号。
答案 1 :(得分:2)
\{([0-9]*)\}\{[0-9] \}(.*)
/|\
|
你错过了第二个数字角色的转发器。
我不确定电影字幕的规则,但我认为括号不能为空。
然后会有更严格的正则表达式(虽然在您的情况下可能不需要):
\{([0-9]+)\}\{[0-9]+\}(.*)
+
转发器表示1个或更多。 *
转发器表示0或更多。