gpt4 book ai didi

regex - 类似于 Lua 中的正则表达式组?

转载 作者:行者123 更新时间:2023-12-04 09:36:06 37 4
gpt4 key购买 nike

我有一个这样的日志:

Jun 21 06:25:07 172.25.1.1 kernel: DROP IN=ppp0 OUT= MAC= SRC=206.221.177.2 DST=185.79.95.179 LEN=40 TOS=0x00 PREC=0x00 TTL=239 ID=25584 PROTO=TCP SPT=40001 DPT=58571 SEQ=1145952392 ACK=0 WINDOW=1024 RES=0x00 SYN URGP=0
我想从中提取一些信息:日期、源 IP 等。
使用正则表达式我可以做到(在 python 或 perl 中): '^(... ..) .* DROP .* SRC=(\S+)'但是我怎么能在 Lua 中做到这一点呢?

最佳答案

您可以使用基于 string.match 的解决方案:

local s = "Jun 21 06:25:07 172.25.1.1 kernel: DROP IN=ppp0 OUT= MAC= SRC=206.221.177.2 DST=185.79.95.179 LEN=40 TOS=0x00 PREC=0x00 TTL=239 ID=25584 PROTO=TCP SPT=40001 DPT=58571 SEQ=1145952392 ACK=0 WINDOW=1024 RES=0x00 SYN URGP=0 ]"
date,ip = string.match(s, "^(%w+ %d+ %d%d:%d%d:%d%d) .* DROP .* SRC=(%S+)")
print (date) -- Jun 21 06:25:07
print (ip) -- 206.221.177.2
Lua demo online .
图案详情
  • ^ - 字符串开头
  • (%w+ %d+ %d%d:%d%d:%d%d) - 捕获组 #1(注意它的值将被分配给 date,左侧的第一个变量):1+ 字母数字、空格、1+ 数字、空格、2 位数字、: , 2 位数字, :和 2 位数字
  • .* DROP .* SRC= - 文字字符串
  • (%S+) - 捕获组 #2(注意它的值将被分配给 ip,左侧的第二个变量):1 个或多个非空白字符。

  • 请记住,当 Lua 模式中有捕获组时, string.match函数将返回所有这些。这非常方便。

    关于regex - 类似于 Lua 中的正则表达式组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62579989/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com