解析字符串模式 - Python

时间:2015-05-19 16:20:42

标签: python regex string parsing

我有一个字符串模式(对于xml测试报告者),采用以下模式:

'testsets.testcases.[testset].[testcase]-[date-stamp]'

例如:

a='testsets.testcases.test_different_blob_sizes.TestDifferentBlobSizes-20150430130436'

我知道我总是可以通过以下方式解析testsettestcase名称:

temp = a.split("-")[0]
current = temp.split(".")
testset = '.'.join(current[:-1]) + ".py"
testcase = current[-1]

但是,我希望使用更加pythonic的方式来实现这一点,例如regex或我将在一行中执行的任何其他表达式。我怎么能做到这一点?

3 个答案:

答案 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的回复。