正则表达式解析AT命令

时间:2018-07-17 10:23:07

标签: javascript regex python-3.x at-command

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

其结构如下:

OK
AT!GSTATUS?
!GSTATUS:
Current Time:  2420             Temperature: 30
Reset Counter: 1                Mode:        ONLINE
System mode:   LTE              PS state:    Attached
LTE band:      B30              LTE bw:      10 MHz
LTE Rx chan:   1234             LTE Tx chan: 12345
LTE CA state:  NOT ASSIGNED
EMM state:     Registered       Normal Service
RRC state:     RRC Idle
IMS reg state: No Srv

PCC RxM RSSI:  -74              RSRP (dBm):  -103
PCC RxD RSSI:  -74              RSRP (dBm):  -104
Tx Power:      0                TAC:         123A (1234)
RSRQ (dB):     -12.4            Cell ID:     1234AB56 (12345678)
SINR (dB):      9.4

我希望在比赛中捕获冒号后面的所有属性,并在比赛中将结果捕获到另一组中。


  • |匹配|

  • |第1组|第2组|

  • 单元格ID | 1232AA96(12345678) |
  • TAC | 123A(1234) |

当前,我想到了:

r" ([0-9A-Za-z()]+):\s*([0-9A-Za-z()]+\s?[0-9A-Za-z()]+[\n])" gm

https://regex101.com/r/DS6IIk/1

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您的键值对可以具有仅用 空格分隔的“单词”(并且您的样本证明了它们确实如此),则可以匹配并捕获单个空格分隔的非空格冒号之前,冒号之后和任意数量的空格的大块:

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

请参见regex demo

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

详细信息

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