javascript - 解析 AT 命令的正则表达式

标签 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

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

最佳答案

如果您的键值对可以包含仅用单个 空格分隔的“单词”(并且您的示例证明它们确实如此),您可以匹配并捕获单个空格分隔的非空格冒号之前和冒号之后的 block 以及任意数量的空格:

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

参见 regex demo

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

详情

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

关于javascript - 解析 AT 命令的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379002/

相关文章:

javascript - 如何比较字符串并检查阈值是否相等?

javascript - 时间格式的正则表达式,如 DD :HH:MM:SS

python - 为 python 生成一个整数中的所有数字,除了最后一个

python - pymongo 的安装有效但在 python3 中导入时失败

python - 列表值的字典理解

javascript - 随着屏幕宽度的变化缩小和扩大表格宽度

javascript - 解析以特定文本开头并包含数字的类?

javascript - iScroll:不要移动到页面之外

javascript - 为什么未处理的 promise 拒绝

html - 正则表达式:匹配不在 HTML 标记内的特定字符串