【发布时间】:2020-01-17 23:41:43
【问题描述】:
我发现自己正在编写一个看起来像这样的代码块,其中我为每一行文本检查了一堆不同的可能的正则表达式匹配。
for line in someText.splitlines():
matchObj = re.search(lineproto, line)
if matchObj:
do_lineproto_stuff( matchObj.groups(1), matchObj.groups(2) )
matchObj = re.search(inRate, line)
if matchObj:
do_inRate_stuff( matchObj.groups(3), matchObj.groups(4) )
matchObj = re.search(outRate, line)
if matchObj:
do_outRate_stuff( matchObj.groups(5), matchObj.groups(6) )
这很好用——似乎应该有一些更优雅的方式来执行条件以查看 if 我匹配正则表达式,如果是,则使用 groups() 构造所有一口气。但也许不是……只是好像有很多重复的代码,仅此而已……
【问题讨论】:
-
some_text的类型是什么?至于你的问题,鉴于这是一个抽象的例子,有点难以回答。 -
您必须提供至少一对输入/期望我们尝试
-
旁注:这里的几行(所有
search行)都有非法终端:s,并且没有必要将sometext.splitlines()包装在iter()中;for循环,就其本质而言,总是以隐式在被迭代的事物上调用iter开始。