2017-04-06 69 views
0

我有一个要求从日志中查找用户。如何在一行中的多个字符串之间找到一个字符串

我从我的日志文件中有一行代码。该行中的一个字符串是用户标识。我也有所有用户名单。

是否有任何简单的方法来识别行中提到的用户标识。

如:Calling Business function ProcessSOMBFCommitment_Sourcing from F4211FSEditLine for ND9074524. Application Name [P421002], Version [] (BSFNLevel = 3)

这里,ND9074525是用户ID。我的意图是从行中识别用户。

其他可能的用户ID可以AB9074158AC9074168AD9074123AE9074152

我不通过所有可能的用户ID要循环。我想创建一个所有userid的列表,并通过某种方法找到使用的userid。不知道它是否存在。

+1

做用户ID遵循任何特定的模式,如果是这样,是什么呢? –

+0

是,两个字母后跟7位数字。 –

+2

两个整个字母?哦,等等:两封信。 – trincot

回答

1

使用正则表达式来查找所有匹配用户标识模式的字符串;那么你可以看到它们中是否有实际的用户标识。

3

您可以使用此正则表达式来获取用户ID:

[A-Z]{2}\d{7} 

然后核对有效的用户ID。

Regex Demonstration


代码:

import re 

users = ['AB9074158', 'AC9074168', 'AD9074123', 'AE9074152'] 
s = 'Calling Business function ProcessSOMBFCommitment_Sourcing from F4211FSEditLine for ND9074524. Application Name [P421002], Version [] (BSFNLevel = 3)' 

pat = '[A-Z]{2}\d{7}' 
user_id = re.search(pat, s).group(0) 

print(user_id) 

if user_id in users: 
    print("User accepted!") 
else: 
    print("User not accepted") 

输出:

'ND9074524' 
'User not accepted' 
相关问题