通常,我想将一个文本与一个模式匹配,然后在其后的文本与另一个模式匹配。我认为这听起来很模糊,因此请看以下示例:
https://regex101.com/r/i35XhG/1
在该示例中,我匹配“机箱ID:”,但我不知道“机箱ID”和“:”之间的空格数,因此我添加了\ s +。第二个捕获组与一组特殊格式的十六进制数字匹配。 现在,我的目标是隔离结果中的十六进制部分,但我只能将其与“机箱ID:”一起使用。我该怎么做?
对于我来说,匹配长度动态的东西是一个普遍的问题,但只在乎并找回之后的东西。
谢谢。
答案 0 :(得分:0)
您需要做的就是将捕获组包装在括号中,例如:
(Chassis ID\s+: )()([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+)
现在您可以通过3c:61:04:65:22:80
访问\3
。
看这里:https://regex101.com/r/14vr2O/1现在您可以看到Group 3.
和您的值。
您也可以将正则表达式简化为此:
(Chassis ID\s+: )((?:[0-9a-f]+:){5}[0-9a-f]+)
答案 1 :(得分:0)
(
和)
在正则表达式中创建捕获组您的第一个组捕获了Chassis ID\s+:
,而第二个组则什么也没捕获。删除( and
周围的Chassis ID\s+:
),然后将第二个捕获组的结尾)
移到正则表达式的末尾。现在,您可以按第一个捕获组访问3c:61:04:65:22:80
。
Chassis ID\s+: ([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+)