我目前正試圖以配合這個表達式:正則表達式匹配任何字符的任何線路,直到我們達到一定的匹配
^(?<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