问题描述
|
我正在提取以Windows logonID结尾的事件...这意味着:
Special Privileges assigned to a new logon: logon Id: 0x007d
我认为这是最好的方法:
^(?<event>.+)(?<=ID:\\s\\d+x[A-F\\d]+)$
使用RegexOptions.RightToLeft从字符串的结尾开始搜索。
因此,使用lookbehind如果{ID:logonId}不存在,它将尽快失败。
由于找不到合适的“从右到左”测试仪,因此我在这里,寻求您的帮助。
解决方法
你能找到比赛的位置吗?在Perl中,可以做到:
if ($str =~ /ID:\\s\\d+x[A-F\\d]+$/i)
say substr($str,$-[0]); # $-[0] is the starting pos of the match.
}
要么
if ($str =~ /ID:\\s\\d+x[A-F\\d]+$/ip)
say ${^PREMATCH};
}
,我不明白为什么您需要RightToLeft选项或一个后备选项。您是否使用过这样的正则表达式进行了测试:
(?i)^(?<event>.+)ID:\\s\\d+x[A-F\\d]+$
...发现它太慢了?