正则表达式模式以匹配日志文件中的 APK 文件名

本文关键字:APK 文件名 文件 日志 模式 正则表达式 | 更新日期: 2023-09-27 18:32:08

我在构建正则表达式模式以适应日志文件中的所有修改时遇到了问题。它是一个日志文件,充满了提取的Android APK软件包。它看起来像这样:

"''fileserver'folder1'20151215'15'com.some.package1_658d67d60f573a2874c0163bdd3686eb9b15753c:'assets'fonts'somefile-LightIt.otf" is OK
"''fileserver'folder1'APK_white'20151215'15'com.some.package2_658d67d60f573a2874c0163bdd3686eb9b15753c" is OK
"''fileserver'folder1'20151215'15'com.some.package3.android_4538d62efe8b312a5adc4ed6aee14d2c37b7da48:'assets'SD'emotions'873.zip:'873'873.png" is OK
"''fileserver'folder1'20151215'15'com.some.package4.android_4538d6abfe8b312a5adc4ed6aee14d2c37b7da48:'assets'SD'emotions'873.zip:'873'873.sam" is OK
"''fileserver'folder1'20151215'15'658d67d60f573a2874c0163bdd3686eb9b15753c:'assets'fonts'somefile-LightIt.otf" is OK

我所需要的只是获取APK软件包的名称。这意味着我需要从提到的示例中获取以下内容:

com.some.package1_658d67d60f573a2874c0163bdd3686eb9b15753c
com.some.package2_658d67d60f573a2874c0163bdd3686eb9b15753c
com.some.package3.android_4538d62efe8b312a5adc4ed6aee14d2c37b7da48
com.some.package4.android_4538d6abfe8b312a5adc4ed6aee14d2c37b7da48
658d67d60f573a2874c0163bdd3686eb9b15753c

我创建了这个"残酷"的正则表达式:

((?!.+:''.*)(?:".+''(.+)"'s.*))|((?=.+:''.*)(?:".+''(.{2,}):''.*"))

在找到包含另一个存档的 APK 包(我示例中的最后 2 行)之前,它可以正常工作。它意味着更多的":''"在同一行上。

我迷路了。感谢您的任何建议

正则表达式模式以匹配日志文件中的 APK 文件名

如果它需要是一个正则表达式,你可以想出:

(com[^:'''n'r"]+)
# look for com literally
# match everything that is not a colon, backslash, double quote or linebreak
# capture everything into a group

查看有关 regex101.com 的演示。否则,请听从@Maurice的建议。

逐行解析日志,并使用下面的表达式获取 APK 文件名。它将获取从最后一个'字符到第一个:字符的所有内容。

[^'']*?(?=:+)