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