首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Regex从C#从STring获取子字符串

使用Regex从C#从STring获取子字符串
EN

Stack Overflow用户
提问于 2022-11-07 16:33:16
回答 1查看 47关注 0票数 0

我有一个来自防火墙的日志,我认为这是一种可怕的格式,但是我实际上想要提取的信息是相对一致的。一个例子(尽管我已经删除了所有隐私方面的特定信息)是:

代码语言:javascript
运行
复制
<46>Nov7 04:33:25 FirewallDeviceName [Some identifier from the firewall, can contain spaces]: in:[InterfaceName] out:[InterfaceName], connection-state:new src-mac [Mac-ID], proto UDP, [SourceIP]:[SourcePort]->[Dst-IP]:[Dst-Port], len 32

我想从中提取的只是源和目标IP地址和端口,也可能是输入和输出接口,也许是协议。

我认为最好的方法是将.SubString(pos,length)和.IndexOf(char)与RegEx组合起来,以匹配每个字符串所需的位。

例如:

  • \s0-9+.
  • 0-9+\\将首先使用“->”拆分源和目的地,然后使用":“将其中的IP地址从端口.

分隔开。

我不知道的一点是如何在RegEx (获取字符位置)或SubString函数中使用IndexOf,或者即使这是可能的。

这里有任何帮助或建议。

我最初想要写的是一个解析器来解析我生成的一些文本文件日志(这些日志是从我为我们的新防火墙编写的syslog侦听器生成的,用来计算输出的样子).最终,解析器将被内置到侦听器本身中,以便我想要的位直接记录到SQL数据库,但是我可以这样做。我不确定的是带有Regex的解析器。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 16:46:20

基于给出的示例文本,RegEx

代码语言:javascript
运行
复制
, (\[SourceIP\]:\[SourcePort\])->(\[Dst-IP\]:\[Dst-Port\]),

将源和目的地捕获到$1$2中。然而,我怀疑它们实际上是带有圆点的数字,而不是方括号内的单词。因此,一个更好的表达方式可能是

代码语言:javascript
运行
复制
, ([\d.]+:\d+)->([\d.]+:\d+),

这个RegEx与proto UDP, 1.2.3.4:567->8.9.0:123, len 32中的两个部分相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74349873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档