在Python中通过regex提取部分字符串

2024-10-02 16:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的字符串列表

mystring = [
'FOO_LG_06.ip', 
'FOO_LV_06.ip', 
'FOO_SP_06.ip', 
'FOO_LN_06.id',       
'FOO_LV_06.id', 
'FOO_SP_06.id']

我要做的是把它打印出来,这样就可以得到:

LG.ip 
LV.ip 
SP.ip 
LN.id
LV.id 
SP.id

在python中如何做到这一点

我被这个代码困住了:

   for soth in mystring:
       print soth

在Perl中,我们可以对regex捕获执行以下操作:

my ($part1,$part2) = $soth =~ /FOO_(\w+)_06(\.\w{2})/;
print "$part1";
print "$part2\n";

Tags: 字符串代码ipid列表foospprint
2条回答

如果您想以类似于perl的方式来执行此操作,可以使用re.search

import re

mystring = [
'FOO_LG_06.ip', 
'FOO_LV_06.ip', 
'FOO_SP_06.ip', 
'FOO_LN_06.id',       
'FOO_LV_06.id', 
'FOO_SP_06.id']

for soth in mystring:
    matches = re.search(r'FOO_(\w+)_06(\.\w{2})', soth)
    print(matches.group(1) + matches.group(2))

matches.group(1)包含第一个捕获,matches.group(2)包含第二个捕获

ideone demo

不同的正则表达式:

p='[^]+([A-Z]+)[^.]+(..*)'

    >>> for soth in mystring:
    ...    match=re.search(p,soth)
    ...    print ''.join([match.group(1),match.group(2)])

输出:

LG.ip公司

低压ip

SP.ip公司

身份证号码

低压id

SP.id编号

相关问题 更多 >