【问题标题】:How to remove all text except variable substring between two known points?如何删除两个已知点之间除变量子串之外的所有文本?
【发布时间】:2017-12-03 18:39:15
【问题描述】:

我从我们的 VPN 设备获得了一个巨大的日志文件,我想将其缩减为简单的 Domain\UsernameDomain\Username 之后的文本有一些变化,但都以日期(可变)、时间(可变)、-Access-DC-(一致)和带括号的 IP 地址(括号保留但 IP 变化)开头。用户名长度也不同。任何帮助表示赞赏。

是的,我对 RegEx 很陌生...我正在使用 Notepad++ 来减少它。希望文本最后显示为Domain\username。我尝试了几种表达方式来减少它,但只是部分成功,而且由于Domain\Username 之后的文字不同,它留下了很多行。

例如。 .*(?<=Username:)(?>,).*

样本数据:

2017-06-29 07:27:13 - Access-DC - [10.10.25.294] Domain\username(Basic Domain Access)[Basic Employee Access] - Web SSO: Authentication successful. Credential Used: Username: username, Error: (0) Initial, Realm: Domain.COM, Auth Type: (32) Kerberos, Cred Type: (0) System Credential, Target: server.Domain.com, Password: XXXXXX, Has Ticket: 1, Policy Auth: (32) Kerberos, Cred Label: Default, Server Realm: Domain.COM,

2017-06-29 07:27:13 - Access-DC - [10.5.27.236] Domain\username(Basic Domain Access)[Basic Employee Access] - Web SSO: Authentication successful. Credential Used: Username: username, Error: (0) Initial, Realm: Domain.COM, Auth Type: (32) Kerberos, Cred Type: (0) System Credential, Target: server.Domain.com, Password: XXXXXX, Has Ticket: 1, Policy Auth: (32) Kerberos, Cred Label: Default, Server Realm: Domain.COM,

2017-06-29 07:27:13 - Access-DC - [10.5.27.236] Domain\username(Basic Domain Access)[Basic Employee Access] - Web SSO: Authentication successful. Credential Used: Username: username, Error: (0) Initial, Realm: Domain.COM, Auth Type: (32) Kerberos, Cred Type: (0) System Credential, Target: server.Domain.com, Password: XXXXXX, Has Ticket: 1, Policy Auth: (32) Kerberos, Cred Label: Default, Server Realm: Domain.COM,

期望的输出:

Domain\username
Domain\username
Domain\username

【问题讨论】:

  • 你要修剪的部分,举一个after的例子。不过看起来很容易。正则表达式新手?
  • RegEx 的全新...我正在使用 Notepad++ 来减少它。希望文本最后显示为域\用户名。我尝试了几个表达式来修剪它,但只是部分成功,并且由于 Domain\Username 之后的文本不同,它留下了很多行。前任。 .*(?,).*
  • 所以我想从这个开始:2017-06-29 07:27:13 - Access-DC - [10.10.25.294] Domain\username(Basic Domain Access)[Basic Employee访问] - Web SSO:身份验证成功。使用的凭据:用户名:用户名,错误:(0)初始,领域:Domain.COM,身份验证类型:(32)Kerberos,凭据类型:(0)系统凭据,目标:server.Domain.com,密码:XXXXXX,有Ticket:1,Policy Auth:(32) Kerberos,Cred Label:默认,Server Realm:Domain.COM,To THIS:Domain\Username
  • 所以基本上,您只需要计数即可。换句话说Domain\Username\nDomain\Username\nDomain\Username\n等等。?
  • @AgentStuart 请将所有新的详细信息添加到您的问题中,而不是通过 cmets 添加。这将帮助读者理解完整的故事,而无需展开和阅读所有的 cmets。 (您也应该展示您的尝试。)

标签: regex replace notepad++


【解决方案1】:

定位]( 之间的子字符串,这将使您到达那里:

模式:^[^]]+] ([^(]+).* 替换为:$1

Pattern Demo

【讨论】:

  • @AgentStuart 我已经使用您提供的数据在我的 Notepad++ 上测试了这一点是否准确/成功。这是你想要做的吗?您的 Domain/username 子字符串当然不是字面意思吗?
  • 是的!这是一个巨大的胜利......非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-07-20
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 2019-01-24
  • 2016-09-28
相关资源
最近更新 更多