将正则表达式与垃圾值匹配 - C#

时间:2015-08-21 06:40:28

标签: c# regex

我有一个我正在匹配正则表达式的字符串 - 事实是从HEX转换的字符串 - 在某些情况下具有垃圾值:

所以字符串看起来像这样:

$<MSG.Info.ServerLogin>
$DeviceName=Unnamed AVL
$Software=avl_2.12.0_rc14 (TestingString)
$Hardware=TST3 rev:03-NUCH
$IMEI=123456789789456
$PhoneNumber=0012345679
$LocalIP=123.456.789.96
$LastValidPosition=GPRMC,062423.000,A,2500.5000,N,05000.1000,E,5.34,142.12,210815,,
$Security=0
$CmdVersion=2
$SUCCESS
$<end>

这是我的正则表达式:

^(?<Header>\$\<MSG\.Info\.ServerLogin\>\s*)\$DeviceName=(?<DeviceName>[_0-9A-Za-z:\-\s]*)\$Software=(?<Software>[_0-9A-Za-z:\.\s\(\)=]*)\$Hardware=(?<Hardware>[-_0-9A-Za-z:\.\]\[\(\)\s]*)\$IMEI=(?<IMEI>[0-9]{15,}\s*)\$PhoneNumber=(?<PhoneNumber>[0-9A-Za-z\s]*)\$LocalIP=(?<LocalIP>[-_0-9A-Za-z\.\s]*)(?<GPRMCHeader>\$LastValidPosition=GPRMC),(?<UTCTime>[0-9]{6}\.{1}[0-9]{3}),(?<Status>[ALSV]{1}),(?<Latitude>[0-9]{4}\.{1}[0-9]{4},[NS]),(?<Longitude>[0-9]{5}\.{1}[0-9]{4}'?\"?,[EW]),(?<SpeedOverGround>[0-9\.]*),(?<TrackTrue>[0-9\.]*),(?<UTCDate>[0-9]+),(?<MagneticVariation>[0-9\.]*),(?<MagneticDirection>[EW\s]*)\$Security=(?<Security>[0-9\s]*)\$CmdVersion=(?<CmdVersion>[0-9\s]*)\$SUCCESS\s(?<Footer>[\$\<end\>\s])

PhoneNumber具有值时,所有内容匹配: enter image description here

但是当我有这个快照中的数据时 - 它不匹配。

enter image description here

有没有办法在Regex中处理这个问题 - 我正在使用C#:

这是我的代码:

var regexLoginMessage = new Regex(msgPattern, RegexOptions.IgnoreCase);
var regexMatch = regexLoginMessage.Match(strMessage);

0 个答案:

没有答案