Javascript 要解析AT命令的Regex

Javascript 要解析AT命令的Regex,javascript,regex,python-3.x,at-command,Javascript,Regex,Python 3.x,At Command,我试图使用正则表达式来解析AT命令结果中的元素 其结构如下: OK 在格斯塔斯? !GSTATUS: 当前时间:2420温度:30 重置计数器:1模式:联机 系统模式:LTE PS状态:已连接 LTE频段:B30 LTE带宽:10 MHz LTE接收信道:1234 LTE发送信道:12345 LTE CA状态:未分配 EMM状态:已注册的正常服务 RRC状态:RRC空闲 IMS注册状态:无Srv PCC RxM RSSI:-74 RSRP(dBm):-103 PCC RxD RSSI:-74 R

我试图使用正则表达式来解析AT命令结果中的元素

其结构如下:
OK
在格斯塔斯?
!GSTATUS:
当前时间:2420温度:30
重置计数器:1模式:联机
系统模式:LTE PS状态:已连接
LTE频段:B30 LTE带宽:10 MHz
LTE接收信道:1234 LTE发送信道:12345
LTE CA状态:未分配
EMM状态:已注册的正常服务
RRC状态:RRC空闲
IMS注册状态:无Srv
PCC RxM RSSI:-74 RSRP(dBm):-103
PCC RxD RSSI:-74 RSRP(dBm):-104
发射功率:0TAC:123A(1234)
RSRQ(dB):-12.4单元ID:1234AB56(12345678)

SINR(dB):9.4
如果您的键值对中的“单词”只能用一个空格分隔(并且您的示例证明它们是这样的),那么您可以匹配并捕获冒号前后单个空格分隔的非空格块以及任意数量的空格:

(\S+(?: \S+)*): *(\S+(?: \S+)*)

要匹配任何水平空格,请将空格替换为
[^\S\r\n]
模式

详细信息

  • (\S+(?:\S+*)
    -第1组:一个或多个非空白字符,后跟0+个连续出现的单个空格(如果使用
    [^\S\r\n]*
    ,则为LF和CR以外的任何零个或多个空白字符),然后是1+个非空白字符
  • :*
    -冒号后跟0+空格
  • (\S+(?:\S+*)
    -第2组:与第1组模式相同

也许应用一些逻辑形式会有所帮助?样本输出有点混乱/模棱两可:在某些线路中有两个KV对,它们是如何分开的?(例如,如果它们用空格分隔,应匹配多少空格?)在第10行:
EMM状态:注册正常服务
,注册和正常服务之间的空格数是否与用于在一条线路中分隔KV对的空格数相同?如果是这样的话,您将如何区分上述情况?请尝试@fardjad,它们之间用冒号分隔
,然后在冒号后面加上任意数量的空格。所以OP需要第1组中冒号之前的所有内容,第2组中冒号之后的所有内容。他们试图分离键/值对。@我知道键和值是用冒号分隔的,但在某些情况下,一行中有两个键/值对,如下所示:
RSRQ(dB):-12.4单元格ID:1234AB56(12345678)
。据我所知,这些对是用固定数量的空格分隔的,看起来键和值中都允许使用空格。