正则表达式从右到左事件的后向查找

发布于 2024-11-09 05:03:11 字数 381 浏览 5 评论 0原文

我正在提取以 Windows LogonID 结尾的事件...这意味着:

分配给新登录的特殊权限:登录 ID:0x007d

我认为这是最好的方法:

^(?<event>.+)(?<=ID:\s\d+x[A-F\d]+)$

使用 RegexOptions.RightToLeft 从末尾开始搜索细绳。

使用lookbehind,因此如果 {ID: LogonId} 不存在,它将尽快失败。

由于我找不到任何好的从右到左测试器,我在这里寻求您的帮助。

I'm extracting the events ending with Windows LogonIDs... this means like:

Special Privileges assigned to a new Logon: Logon Id: 0x007d

I thought this is the best way to do it:

^(?<event>.+)(?<=ID:\s\d+x[A-F\d]+)$

Using RegexOptions.RightToLeft to start the search from the End of the String.

Using lookbehind so If the {ID: LogonId} didn't exists it will fail as fast as it can.

As I can't find any good Right To Left tester I'm here, asking for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浊酒尽余欢 2024-11-16 05:03:11

你能得到比赛的位置吗?在 Perl 中,人们可以这样做:

if ($str =~ /ID:\s\d+x[A-F\d]+$/i)
   say substr($str, 0, $-[0]);  # $-[0] is the starting pos of the match.
}

或者

if ($str =~ /ID:\s\d+x[A-F\d]+$/ip)
   say ${^PREMATCH};
}

Can you get the position of the match? In Perl, one could do:

if ($str =~ /ID:\s\d+x[A-F\d]+$/i)
   say substr($str, 0, $-[0]);  # $-[0] is the starting pos of the match.
}

or

if ($str =~ /ID:\s\d+x[A-F\d]+$/ip)
   say ${^PREMATCH};
}
甜心 2024-11-16 05:03:11

我不明白为什么您需要 RightToLeft 选项后视。您是否使用这样的正则表达式测试过它:

(?i)^(?<event>.+)ID:\s\d+x[A-F\d]+$

...并发现它太慢了?

I don't see why you would need the RightToLeft option or a lookbehind. Have you tested it with a regex like this:

(?i)^(?<event>.+)ID:\s\d+x[A-F\d]+$

...and found it to be too slow?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文