我目前正试图以配合这个表达式:正则表达式匹配任何字符的任何线路,直到我们达到一定的匹配
^(?<Date>(0[1-9]|[12][0-9]|3[01])[/.](0[1-9]|1[012])[/.](19|20)\d\d) (?<Time>(?:(?:(\d+):)?(\d+):)?(\d+)): (?<Name>.*) (?<IP>\([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?\)) (?<GUID>.*) - (?<Line>#([0-9]?[0-9]?[0-9]?[0-9]?)) (?<Code>.*)\n(?<Code2>(\n|.)*)
以此为输入:
08.08.2012 01:47:40: ferngully (98.169.247.118:2304) 6ff0e06c6d5434a953b2780f852bf762 - #17 "moveIn",
"land",
"addWPCur",
"animate",
"setDate",
"playmusic",
"playsound",
"switchmove",
08.08.2012 01:47:40: Thugnificent (72.86.3.240:50218) 696089009a4e885fe5ec0323d4537253 - #0 f)')};
BIS_ALICE_fnc_houseEffects = compile preprocessFileLineNumbers '\ca\modules\alice\d
08.08.2012 01:36:28: [SOER]MrWolf (58.110.48.174:2304) 464f91fcefe7f1014979c5140a0f1649 - #12 airing..."] call d_fnc_VehicleChat};
_object setDamage 0;
sleep d_reload_time_factor;
if (!alive _ob
这个问题它只返回1个匹配项,它需要能够匹配3个匹配项。
最终的目标是能够在包含日期,时间,名称,IP,GUID,行和多行代码的每个“标题”之间拉取代码。
编辑:
我解决了这个问题,我需要在第二日期提前使用一下。
当前正则表达式:
^(?<Date>(0[1-9]|[12][0-9]|3[01])[/.](0[1-9]|1[012])[/.](19|20)\d\d?) (?<Time>(?:(?:(\d+):)?(\d+):)?(\d+)?): (?<Name>.*?) (?<IP>\([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:.*?\)?) (?<GUID>[0-9a-z]{32}?) - (?<Line>#[0-9]*?) (?<Code>(\n|.)*?)(?=(0[1-9]|[12][0-9]|3[01])[/.](0[1-9]|1[012])[/.](19|20)\d\d)
除非他明确设置'RegexOptions.Singleline'标志,否则这是不正确的,因为默认情况下点不匹配换行符。 – 2012-08-08 09:55:35
这是真的。我忘记了那种事情。不过,他可能会这样做,所以它可能会有所帮助。 :) – Chris 2012-08-08 10:01:43
这是在多行字符串搜索中搜索确切字符串直到找到匹配的最简单和最优雅的方式。 – Hahnemann 2017-04-01 14:42:25