我尝试使用正则表达式分离wowza日志进行数据分析,但我无法将下面的部分分开。
我需要一个满足两种日志格式的 SINGLE正则表达式。
格式1:
live wowz://test1.example.com:443/live/_definst_/demo01|wowz://test2.example.com:443/live/_definst_/demo01 test
格式2:
live demo01 test
我正在尝试拆分3个参数的行,并在app
,streamname
和id
组中捕获它们,但streamname
应仅捕获后的文本最后/
。
这是我尝试过的:
(?<stream_name>[^/]+)$
- &gt;使用这种模式我只能分离格式1&#34; wowz&#34;部分。不是上面提到的完整格式1示例。
预期产出
{
"app": [
[
"live"
]
],
"streamname": [
[
"demo1"
]
],
"id": [
[
"test"
]
]
}
答案 0 :(得分:2)
您可以使用以下正则表达式来实现您指定的内容:
^(?<app>\S+) (?:\S*/)?(?<streamname>\S+) (?<id>\S+)$
\S+
匹配除空格之外的任意数量的字符。
(?:\S*/)?
可选择使用第二个参数中的字符,直至最后/
。这不包括在组中,因此不会被捕获。