[英]Parsing a string pattern - Python
我在以下模式中有一个字符串模式(用于xml
测试报告程序):
'testsets.testcases.[testset].[testcase]-[date-stamp]'
例如:
a='testsets.testcases.test_different_blob_sizes.TestDifferentBlobSizes-20150430130436'
我知道我总是可以通过执行以下操作来解析testcase
testset
和testcase
名称:
temp = a.split("-")[0]
current = temp.split(".")
testset = '.'.join(current[:-1]) + ".py"
testcase = current[-1]
但是,我想使用一种更Python的方式来实现这一点,例如regex
或我将在一行中完成的任何其他表达式。 我该怎么做?
你可以试试:
testset, testcase = re.search('(.*)\.(.*)-.*', a).group(1, 2)
testset += '.py'
re.search
在匹配MatchObject
上返回MatchObject
,它具有一个group
方法,可用于为正则表达式(正则表达式中的“()”)提取匹配组。
只需使用groups
,从正则表达式搜索组获得:
data = re.search(r'.+\..+\.(.+)\.(.+)-(\d+)', string).groups()
如您在问题的第一部分中一样,如果严格要提取测试集和测试用例,即“ test_different_blob_sizes”和“ TestDifferentBlobSizes”,则可以执行以下操作:
testset, testcase = re.split('[.-]',s)[2:4]
有关基于所拥有内容的紧凑型正则表达式代码的信息,请参见Ziyao Wei的回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.