使用正则表达式提取多个值(只有值,没有字段名)

Extracting multi values with regex ( Only values, Not Fieldname )

有人可以帮我解决这个正则表达式吗? 我想提取 1. 或 2.

1.

(2624594000) 303 days, 18:32:20.00  <-- Timeticks
.1.3.6.1.4.1.14179.2.6.3.39.        <-- OID
Hex-STRING: 54 4A 00 C8 73 70   <-- Hex-STRING (need "Hex-STRING" ifself too)
0                                   <--INTEGER
"NJTHAP027"                         <- STRING

2.

Timeticks: (2624594000) 303 days, 18:32:20.00
OID: .1.3.6.1.4.1.14179.2.6.3.39
Hex-STRING: 54 4A 00 C8 73 70
INTEGER: 0
STRING: "NJTHAP027"

我不需要获取字段名称,只想从顶部按顺序获取值(多值)

(?s)[^=]+\s=\s(?<value_v2c>([^=]+)-)

https://regex101.com/r/lsKeEM/2 -> 我根本无法提取最后一个字符串:“NJTHAP027”!

命名组value_v2c已经是一个组,因此您可以省略内部捕获组。

目前 - 字符应始终在模式中匹配,但您可以匹配它或断言字符串的结尾。

由于您使用否定字符 类 和 [^=]+ 以及 \s,您可以省略内联修饰符 (?s),因为它们都已经匹配换行符。

要匹配 2. 变体,您可以将模式更新为:

[^=]+\s=\s(?<value_v2c>[^=]+)(?:-|$)

Regex demo

获取1.版本,只要不是Hex-String.

,冒号前的都可以匹配

然后在群里随意匹配一下

[^=]+\s=\s(?:(?!Hex-STRING:)[^:])*:?\s*(?<value_v2c>(?:Hex-STRING: )?[^=]+?)(?: -|$)

Regex demo