正则表达式:多行校验问题
Regular Expression : Multiline check problem
你好,我对这个正则表达式有疑问
!
interface TenGigabitEthernet 1/49
description Uplink
no ip address
switchport
no shutdown
!
interface TenGigabitEthernet 1/50
no ip address
shutdown
!
interface TenGigabitEthernet 1/51
no ip address
shutdown
!
我尝试了这个正则表达式(接口)((.\s.)+) 但它不起作用,因为它匹配 "interface" 和文本的其余部分
我需要赶上第一组 "interface",在第二组我需要全部,直到第一次出现“!”
例如:
第一组:
interface
第二组:
TenGigabitEthernet 1/51
no ip address
shutdown
我该怎么做?
试试这个:
(interface)\s+([^!]+)
使用这个:
(interface)\s*([^!]+) /g
第一组攻占hard-codedinterface
。第二组通过跳过前导空格(如果有)来捕获 !
以外的所有内容。全局标志 /g
确保所有匹配项。
如果内容本身可以包含 !
,您可以检查行首的 !
并重复匹配所有行,直到遇到 !
开始。
^(interface)\s*(.*(?:\n(?!!).*)*)
在Java
String regex = "^(interface)\s*(.*(?:\n(?!!).*)*)";
你好,我对这个正则表达式有疑问
!
interface TenGigabitEthernet 1/49
description Uplink
no ip address
switchport
no shutdown
!
interface TenGigabitEthernet 1/50
no ip address
shutdown
!
interface TenGigabitEthernet 1/51
no ip address
shutdown
!
我尝试了这个正则表达式(接口)((.\s.)+) 但它不起作用,因为它匹配 "interface" 和文本的其余部分
我需要赶上第一组 "interface",在第二组我需要全部,直到第一次出现“!” 例如: 第一组:
interface
第二组:
TenGigabitEthernet 1/51
no ip address
shutdown
我该怎么做?
试试这个:
(interface)\s+([^!]+)
使用这个:
(interface)\s*([^!]+) /g
第一组攻占hard-codedinterface
。第二组通过跳过前导空格(如果有)来捕获 !
以外的所有内容。全局标志 /g
确保所有匹配项。
如果内容本身可以包含 !
,您可以检查行首的 !
并重复匹配所有行,直到遇到 !
开始。
^(interface)\s*(.*(?:\n(?!!).*)*)
在Java
String regex = "^(interface)\s*(.*(?:\n(?!!).*)*)";