繁体   English   中英

Python-使用RegEx仅提取介于两个模式之间的字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM