Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析字符串模式-Python_Python_Regex_String_Parsing - Fatal编程技术网

解析字符串模式-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,其中括号表示特定字符串中所需的组。