簡體   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