我有一个字符串模式(对于xml
测试报告者),采用以下模式:
'testsets.testcases.[testset].[testcase]-[date-stamp]'
例如:
a='testsets.testcases.test_different_blob_sizes.TestDifferentBlobSizes-20150430130436'
我知道我总是可以通过以下方式解析testset
和testcase
名称:
temp = a.split("-")[0]
current = temp.split(".")
testset = '.'.join(current[:-1]) + ".py"
testcase = current[-1]
但是,我希望使用更加pythonic的方式来实现这一点,例如regex
或我将在一行中执行的任何其他表达式。我怎么能做到这一点?
答案 0 :(得分:3)
您可以尝试:
-emitDecoratorMetadata
re.search
会在匹配项上返回MatchObject
,并且我们可以使用group
方法为正则表达式提取匹配组("()" s在正则表达式。)
答案 1 :(得分:2)
只需使用从正则表达式搜索组中获取的groups
:
data = re.search(r'.+\..+\.(.+)\.(.+)-(\d+)', string).groups()
答案 2 :(得分:0)
如果您想要提取testset和testcase,即“test_different_blob_sizes”和“TestDifferentBlobSizes”,就像问题的第一部分一样,您可以这样做:
testset, testcase = re.split('[.-]',s)[2:4]
对于基于你所拥有的基于紧凑型正则表达式的代码,请参阅Ziyao Wei的回复。