电影字幕的python正则表达式

时间:2013-12-06 09:44:16

标签: python regex

我正在尝试制作一个能识别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)

具有相同的结果。

2 个答案:

答案 0 :(得分:3)

你非常接近 - 你只是错过了第二个数字部分的重复符号。你的正则表达式应该是这样的:

my_re = r"\{([0-9]*)\}\{[0-9]*\}(.*)"

注意第二个[]阻止后添加的星号。

答案 1 :(得分:2)

\{([0-9]*)\}\{[0-9] \}(.*)
                  /|\
                   |

你错过了第二个数字角色的转发器。

我不确定电影字幕的规则,但我认为括号不能为空。

然后会有更严格的正则表达式(虽然在您的情况下可能不需要):

\{([0-9]+)\}\{[0-9]+\}(.*)

+转发器表示1个或更多。 *转发器表示0或更多。

  • 您是否只对第一个号码感兴趣?
  • 文字是否可选?