用于在HTTP URL中检索文件扩展名的正则表达式

时间:2015-07-17 16:41:50

标签: regex

我正在处理ELK堆栈,作为Logstash数据转换的一部分,我正在转换Apache访问日志中的数据。

需要的一个指标是获取不同内容类型的统计信息(aspx,php,gif等)。

从日志文件中我尝试检索请求网址然后推断出文件类型,因为ex /c/dataservices/online.jsp?callBack是请求,我会使用正则表达式.aspx \.\w{3,4}

我的正则表达式不适用于请求说/etc/designs/design/libs.min.1253.css这会将.min作为扩展名返回给我。

我正在尝试获得最后一次扩展,但它无效。请建议其他方法。

2 个答案:

答案 0 :(得分:3)

您需要将匹配锚定到字符串的末尾或查询参数?的开头。尝试:

\.\w{3,4}($|\?)

在此播放:https://regex101.com/r/iV3iM1/1

答案 1 :(得分:1)

你需要一个更有风扇的正则表达式。

试试这个。

([/.\w]+)([.][\w]+)([?][\w./=]+)?

这使用三个捕获组。第一个([/.\w]+)与您的路径匹配,直到最后.

第二个([.][\w]+)与最终扩展名匹配,您可以使用捕获组来读取它。

第三个([?][\w./=]+)?匹配查询字符串,这是可选的。