python使用正则表达式查找给定字符串中多个字符串的所有匹配项?

时间:2018-08-08 12:28:56

标签: python regex

我有以下模式的字符串。

string = "'L3-OPS-AB-1499', 'L3-RBP_C-449', 'L2-COM-310', 'L2-PLT-16796'"

我的要求是使用正则表达式查找以下所有出现的模式

  

L

开头的字符串      

后跟一个数字

     

一个连字符

     

然后是特殊的关键字,例如“ OPS-AB”或“ PLT”或“ COM”

     

然后是连字符

     

后跟数字

例如:L3-OPS-AB-1499

我尝试了以下正则表达式,但给出了部分结果

regex = re.search("L\d-(OPS|RBP_|-AB|C)|(COM|PLT)-\d+",string)

我的输出

'COM-310'

预期产量

'L3-OPS-AB-1499', 'L3-RBP_C-449', 'L2-COM-310', 'L2-PLT-16796'

任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:1)

使用re.findall

>>> re.findall(r'L\d+-(?:OPS-AB|PLT|COM|RBP_C)-\d+', string)
['L3-OPS-AB-1499', 'L3-RBP_C-449', 'L2-COM-310', 'L2-PLT-16796']