在字符串列表中查找特定模式(正则表达式)(Python)

时间:2015-04-17 10:25:36

标签: python regex string list

所以我有这个字符串列表:

teststr = ['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']

我需要做的是从此列表中获取包含以下内容的所有元素:

number + "x" 

number + "X"

例如,如果我有功能

def SomeFunc(string):
    #do something

我想得到这样的输出:

2x Sec String
5X fifth

我在StackOverflow中找到了这个功能:

def CheckIfContainsNumber(inputString):
    return any(char.isdigit() for char in inputString)

但是这会返回每个带有数字的字符串。

如何扩展功能以获得所需的输出?

1 个答案:

答案 0 :(得分:6)

使用re.search功能和列表理解。

>>> teststr = ['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']
>>> [i for i in teststr if re.search(r'\d+[xX]', i) ]
['2x Sec String', '5X fifth']

\d+匹配一个或多个数字。 [xX]匹配大写和小写x

将其定义为单独的函数。

>>> def SomeFunc(s):
        return [i for i in s if re.search(r'\d+[xX]', i)]

>>> print(SomeFunc(['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']))
['2x Sec String', '5X fifth']