[英]Python - Using RegEx to extract only the String in between pattern
希望有人能指出我正确的方向。
我正在尝试分析日志文件,以找出每天有多少用户登录系统。
日志文件将按照下面列出的模式生成。
“ <”提交ts =“ 20141001114139” client =“ ABCREX / John Doe”>“ 8764”,“ ABCREX / John Doe”,“ 00.000.0.000”,“用户'ABCREX / John Doe'已成功从地址'00 .000登录.0.000'。” “ <” / Commit>“ <” Commit ts =“ 20141001114139” client =“ ABCREX / John Doe”>“ 8764”,“ ABCREX / Jerry Doe”,“ 00.000.0.000”,“用户'ABCREX / Jerry Doe'成功从地址“ 00.000.0.000”登录。” “ <” / Commit>“ <” Commit ts =“ 20141001114139” client =“ ABCREX / John Doe”>“ 8764”,“ ABCREX / Jane Doe”,“ 00.000.0.000”,“用户'ABCREX / Jane Doe'成功从地址“ 00.000.0.000”登录。” “ <” /提交>
我正在尝试从上述行捕获用户名并将其加载到数据库中。
所以我只对价值感兴趣
约翰·杜,杰瑞·杜,简·杜
但是当我使用正则表达式进行模式匹配时,它返回以下内容
client =“ ABCREX / John Doe”>
然后使用我正在使用的代码,我必须进行多次替换以删除“ Client”,“ ABCREX /”,“>” ... etc
我目前有正在运行的代码,但是我觉得它的效率很低并且消耗资源。 我在标签上执行拆分,然后逐行解析读取内容。
'''提取用户登录名'''UserLoginName = str(re.search('client =(。*)>',items).group())。replace('ABCREX /','').replace( 'client =“','')。replace('”>','')
打印(UserLoginName)
我有什么办法可以告诉REGEX只捕获模式中找到的字符串,而不将模式也包括在结果中?
模式= r'User \\ s \\'ABCREX /(。*?)\\''
list_of_usernames = re.findall(模式,输出)
这将与“用户'ABCREX / Jerry Doe'”模式匹配,然后拉出用户名并将其添加到列表中。 有帮助吗? 我也是新来的,所以如果有更多需要帮助的地方,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.