解析字符串模式-Python
我有一个字符串模式(用于解析字符串模式-Python,python,regex,string,parsing,Python,Regex,String,Parsing,我有一个字符串模式(用于xmltest reporter),模式如下: 'testsets.testcases.[testset].[testcase]-[date-stamp]' 例如: a='testsets.testcases.test_different_blob_sizes.TestDifferentBlobSizes-20150430130436' 我知道我总是可以通过执行以下操作来解析testset和testcase名称: temp = a.split("-")[0] curr
xml
test reporter),模式如下:
'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]
然而,我想用一种更具python风格的方式来实现这一点,比如regex
或者任何其他我可以在一行中完成的表达式。我怎样才能做到这一点 您可以尝试:
testset, testcase = re.search('(.*)\.(.*)-.*', a).group(1, 2)
testset += '.py'
在匹配项上返回,并且它有一个方法,我们可以使用该方法提取正则表达式(“()”s)的匹配组。您可以尝试:
testset, testcase = re.search('(.*)\.(.*)-.*', a).group(1, 2)
testset += '.py'
在匹配项上返回一个,它有一个方法可用于提取正则表达式中的正则表达式(“()”s)的匹配组。只需使用从正则表达式搜索组中获得的
组即可:
data = re.search(r'.+\..+\.(.+)\.(.+)-(\d+)', string).groups()
只需使用从正则表达式搜索组中获得的组
:
data = re.search(r'.+\..+\.(.+)\.(.+)-(\d+)', string).groups()
如果您严格地想要拉出测试集和测试用例,即“test_different_blob_size”和“testdifferentitblobsizes”,如问题的第一部分所述,您可以执行以下操作:
testset, testcase = re.split('[.-]',s)[2:4]
testset,testcase=re.split('[.-]',s)[2:4]
有关基于您所拥有的基于压缩regexp的代码,请参阅Ziyao Wei的回答。如果您严格地想要拉出测试集和测试用例,即“测试不同的blob大小”和“测试不同的blob大小”,如问题的第一部分所述,您可以执行以下操作:
testset, testcase = re.split('[.-]',s)[2:4]
testset,testcase=re.split('[.-]',s)[2:4]
有关基于您所拥有的压缩regexp的代码,请参阅Ziyao Wei的回复。您突然开始使用的s
及其名称的可能重复项?@MalikBrahimi sorry将更新question@JoelHinz我认为它们不可能是复制品。。。我在寻找一个比那个问题中所问的更一般的模式,可能是你突然开始使用的s
及其名称的重复吗?@MalikBrahimi sorry将更新question@JoelHinz我认为它们不可能是复制品。。。我在寻找一个比那个问题中所问的更一般的模式,这是一个不正确的正则表达式。查看OP,其中括号表示特定字符串中所需的组。这是一个不正确的正则表达式。查看OP,其中括号表示特定字符串中所需的组。