在python正则表达式中提取字符串的子字符串
我有一个结构化字符串流。我想用Python语言从每个部分中提取2个特定的部分 例如)我的字符串如下所示: cpe:2.3:a:troglobit:uftpd:*:*:*:*:*:*:*:*:*:* cpe:2.3:o:谷歌:安卓:8.0:*:* cpe:2.3:a:microsoft:asp.net_核心:2.1:*:* 我只需要粗体部分 请注意,在python正则表达式中提取字符串的子字符串,python,regex,python-3.x,string,Python,Regex,Python 3.x,String,我有一个结构化字符串流。我想用Python语言从每个部分中提取2个特定的部分 例如)我的字符串如下所示: cpe:2.3:a:troglobit:uftpd:*:*:*:*:*:*:*:*:*:* cpe:2.3:o:谷歌:安卓:8.0:*:* cpe:2.3:a:microsoft:asp.net_核心:2.1:*:* 我只需要粗体部分 请注意,*的数量在每种情况下都是不同的(介于6,7,8之间)。此外,字符串可以通过cpe:2.3:o:或cpe:2.3:a: 我尝试过不同的表达方式,例如:
*
的数量在每种情况下都是不同的(介于6,7,8之间)。此外,字符串可以通过cpe:2.3:o:
或cpe:2.3:a:
我尝试过不同的表达方式,例如:
例如,此示例适用于结尾只有6个*
的情况
try:
temp = re.search("cpe:2.3:a:(.*):\*:\*:\*:\*:\*:\*",testString).group(1)
except AttributeError:
temp = 'NOT FOUND'
或
(不起作用)
或
(不起作用)
谢谢。您无需使用
regex
sample = 'cpe:2.3:a:microsoft:asp.net_core:2.1:*:*:*:*:*:*'
' '.join(sample.split(':')[3:][:2])
'MicrosoftASP.net\uCore'
所有行都有cpe:2.3:a:或类似的内容吗?我的意思是一个3个字母的字符,然后是a:然后是一个数字,一个点,另一个数字,另一个:,另一个字符和另一个:?如果是,请选中@HamedGhasempour,这也适用。谢谢
try:
temp = re.search("(cpe:2.3:a:(.*):(.*))':{0}'$", testString).group(1)
except AttributeError:
temp = 'NOT FOUND'
sample = 'cpe:2.3:a:microsoft:asp.net_core:2.1:*:*:*:*:*:*'
' '.join(sample.split(':')[3:][:2])