我现在尝试从字符串中提取值。 但是我没有让它发挥作用。因为我的正则表达式很糟糕。
这是我的字符串。
/HAG5eHZ010C_EHZ1ZA22
0:0.0.0*255(1095100000053019)
1-0:1.8.1*255(000016.9862)
1-0:2.8.1*255(000001.5740)
1-0:96.5.5*255(80)
0-0:96.1.255*255(0000053019)
1-0:32.7.0*255(000.00*V)
1-0:52.7.0*255(000.00*V)
1-0:72.7.0*255(226.99*V)
1-0:31.7.0*255(000.00*A)
1-0:51.7.0*255(000.00*A)
1-0:71.7.0*255(000.22*A)
1-0:21.7.0*255(+00000*W)
1-0:41.7.0*255(+00000*W)
1-0:61.7.0*255(+00029*W)
1-0:96.50.0*0(89)
1-0:96.50.0*1(07CF)
1-0:96.50.0*2(18)
1-0:96.50.0*3(0E)
1-0:96.50.0*4(2D)
1-0:96.50.0*5(1A)
1-0:96.50.0*6(003D381B2609F5400803010700009F80)
1-0:96.50.0*7(00)
!
当我搜索0:0.0.0时,我需要1095100000053019, 或者当我搜索1-0:61.7.0我需要+ 00029 * W
btw:这是一个智能计量消息。从电表IR接口出来。
非常感谢你的帮助。答案 0 :(得分:0)
For 0:0.0.0: /^0:0\.0\.0[^(]*\(([^)]+)\)/
For 1-0:61.7.0: /^1-0:61\.7\.0[^(]*\(([^)]+)\)/
这些非常相似 - 可以根据您所追求的传感器读数来构建模式并更改模式。
这些正则表达式假设样本中的换行符确实是换行符
答案 1 :(得分:0)
请尝试以下正则表达式模式(REGEX DEMO):
var s = "\/HAG5eHZ010C_EHZ1ZA22\r\n0:0.0.0*255(1095100000053019)\r\n1-0:1.8.1*255(000016.9862)\r\n1-0:2.8.1*255(000001.5740)\r\n1-0:96.5.5*255(80)\r\n0-0:96.1.255*255(0000053019)\r\n1-0:32.7.0*255(000.00*V)\r\n1-0:52.7.0*255(000.00*V)\r\n1-0:72.7.0*255(226.99*V)\r\n1-0:31.7.0*255(000.00*A)\r\n1-0:51.7.0*255(000.00*A)\r\n1-0:71.7.0*255(000.22*A)\r\n1-0:21.7.0*255(+00000*W)\r\n1-0:41.7.0*255(+00000*W)\r\n1-0:61.7.0*255(+00029*W)\r\n1-0:96.50.0*0(89)\r\n1-0:96.50.0*1(07CF)\r\n1-0:96.50.0*2(18)\r\n1-0:96.50.0*3(0E)\r\n1-0:96.50.0*4(2D)\r\n1-0:96.50.0*5(1A)\r\n1-0:96.50.0*6(003D381B2609F5400803010700009F80)\r\n1-0:96.50.0*7(00)\r\n!";
var r = /([0-9-:.]+)\*(?:[0-9]+)\((.*)\)/g;
var m;
while ((m = r.exec(s))) {
document.writeln('"' + m[1] + '"=>"' + m[2] + '"<br>');
}