需要正则表达式来解析日志行,我必须在第 10 次出现管道符号后选择数据 |
示例日志行;
Info device Allow:FWD|TCP|data1|data2|data3|data4|data5|data6|data7|data8|data9|data10|data11|0|1|0|0|0|0||||||
Run Code Online (Sandbox Code Playgroud)
我必须从上面的日志行中选择 data9。
下面是我现在使用的表达式,这是针对 Java 程序的
表达:
\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|
Run Code Online (Sandbox Code Playgroud)
选择组 11
而不是一一转义字符想跳过/忽略10个管道符号并选择 data9
Tot*_*oto 30
这就是量词的用途。
^(?:[^|]*\|){10}([^|]*)
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 21
如果您在另一种编程语言(Python、C# 等)的上下文中使用正则表达式,则该语言可能具有某种类型的字符串拆分功能。根据我的经验,通常更容易在分隔符上拆分并获取值列表/数组,而不是使用正则表达式进行拆分。
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |