Python 查找接口

Python 查找接口,python,regex,Python,Regex,我不擅长正则表达式。我需要帮助识别以单词Fast/Giga开头的行的第一个单词。我尝试了RegEx“^\s*(?=Fast | Giga)。\w+”,但它不是从“/”开始添加的,需要像“GigabitEthernet2/47”这样的全名,它分别匹配“up”和“down” GigabitEthernet2/47 (this should belong to up) GigabitEthernet2/48 (this should belong to down) FastEthernet3/1 (t

我不擅长正则表达式。我需要帮助识别以单词Fast/Giga开头的行的第一个单词。我尝试了RegEx
“^\s*(?=Fast | Giga)。\w+”
,但它不是从“/”开始添加的,需要像“
GigabitEthernet2/47
”这样的全名,它分别匹配“up”和“down”

GigabitEthernet2/47 (this should belong to up)
GigabitEthernet2/48 (this should belong to down)
FastEthernet3/1 (this should belong to down)
FastEthernet3/2 (this should belong to down)
FastEthernet3/3 (this should belong to down)
这一行也需要正则表达式

"Last input 00:00:09, output 00:00:00, output hang never"
输入、输出和输出挂起需要三个正则表达式。不管是什么 紧挨着(输入、输出和输出挂起)应该只显示那个

00:00:09 (this should belong to input)
00:00:00 (this should belong to output)
never    (this should belong to output hang)

interface GigabitEthernet6/48
 description ***connected to Panel***
 switchport access vlan 10
 switchport mode access
 spanning-tree portfast
!
interface GigabitEthernet7/1
!
GigabitEthernet2/47 is up, line protocol is down (notconnect)
  Hardware is Gigabit Ethernet Port, address is 0023.0460.5a4e (bia 0023.0460.5a4e)
  Last input 00:00:09, output 00:00:00, output hang never
GigabitEthernet2/48 is down, line protocol is down (notconnect)
  Hardware is Gigabit Ethernet Port, address is 0023.0460.5a4f (bia 0023.0460.5a4f)
  Last input 42w6d, output 42w6d, output hang never
FastEthernet3/1 is down, line protocol is down (notconnect)
  Hardware is Fast Ethernet Port, address is 0022.906f.4040 (bia 0022.906f.4040)
   Last input 00:00:58, output 00:00:00, output hang never
FastEthernet3/2 is down, line protocol is down (notconnect)
  Hardware is Fast Ethernet Port, address is 0022.906f.4041 (bia 0022.906f.4041)
  Last input never, output never, output hang never
FastEthernet3/3 is administratively down, line protocol is down (disabled)
  Hardware is Fast Ethernet Port, address is 0022.906f.4042 (bia 0022.906f.4042)
  Last input never, output never, output hang never
TenGigabitEthernet4/6 is down, line protocol is down (inactive)
  Hardware is Ten Gigabit Ethernet Port, address is 843d.c632.a74d (bia 843d.c632.a74d)
  Last input never, output never, output hang never

对于您需要的第一个正则表达式,您已经记下了第一部分。现在,您只需要匹配
/
及其后面的数字

^\s*(?=Fast|Giga).\w+/\d+
首先,我添加了一个
/
来匹配斜杠字符。然后,我添加了
\d+
\d
匹配数字字符,也称为数字。
+
修改
\d
符号,使其至少匹配一个数字字符

编辑:要匹配是否已关闭,请使用

(^\s*(?=Fast|Giga).\w+/\d+) is down
对于up,使用

(^\s*(?=Fast|Giga).\w+/\d+) is up

对于您需要的第一个正则表达式,您已经记下了第一部分。现在,您只需要匹配
/
及其后面的数字

^\s*(?=Fast|Giga).\w+/\d+
首先,我添加了一个
/
来匹配斜杠字符。然后,我添加了
\d+
\d
匹配数字字符,也称为数字。
+
修改
\d
符号,使其至少匹配一个数字字符

编辑:要匹配是否已关闭,请使用

(^\s*(?=Fast|Giga).\w+/\d+) is down
对于up,使用

(^\s*(?=Fast|Giga).\w+/\d+) is up

以下内容将捕获您需要的名称:

(^(?:Giga|Fast)\S+)
向上和向下匹配现在已分离(它们最初组合在一起的原因是确保只有当线路以
Giga
Fast
开头时,
Up
down
才匹配):

解释

断言行开始和非捕获组以匹配Giga或Fast(因为整个匹配包含在外部捕获组中),后跟一个或多个非空白字符:

(^(?:Giga|Fast)\S+)
非贪婪非捕获组匹配所有导致上升或下降的内容(重复两次以满足您的需要):


以下内容将捕获输入、输出和输出挂起:

(?:(?<=input )|(?<=output )(?:hang )?)(.*?)(?:\,|$)

(?:(?以下内容将捕获您所需的名称:

(^(?:Giga|Fast)\S+)
向上和向下匹配现在已分离(它们最初组合在一起的原因是确保只有当线路以
Giga
Fast
开头时,
Up
down
才匹配):

解释

断言行开始和非捕获组以匹配Giga或Fast(因为整个匹配包含在外部捕获组中),后跟一个或多个非空白字符:

(^(?:Giga|Fast)\S+)
非贪婪非捕获组匹配所有导致上升或下降的内容(重复两次以满足您的需要):


以下内容将捕获输入、输出和输出挂起:

(?:(?<=input )|(?<=output )(?:hang )?)(.*?)(?:\,|$)

(?:(?)我需要同时包含“up”或“down”的词。这样我就可以匹配哪个是向下的和向上的。很抱歉,它不起作用。我只需要GigabitEthernet2/47,其中包含“向上”一词,与“向下”一词相同。@SelvamsameMuthu查看我的新编辑。我将名称部分放在括号中,表示它将被捕获。然后,您只需使用捕获的部分。r“(^\s*(?=Fast | Giga)。\w+/\d+)已关闭”这是我正在使用的python正则表达式,它显示了整行。@selvamamamymuthu获得匹配对象后,使用group()获取组,该组应仅包含组名。如果您无法理解这一点,请在帖子中包含您的代码。我需要同时包含“up”或“down”两个词的组。这样我就可以匹配哪个是向下的和向上的。很抱歉,它不起作用。我只需要GigabitEthernet2/47,其中包含“向上”一词,与“向下”一词相同。@SelvamsameMuthu查看我的新编辑。我将名称部分放在括号中,表示它将被捕获。然后,您只需使用捕获的部分。r“(^\s*(?=Fast | Giga)。\w+/\d+)已关闭”这是我正在使用的python正则表达式,它显示了整行。@selvamamamymuthu一旦获得匹配对象,就用group()获取组,其中应仅包含组名。如果您无法解决此问题,请在您的帖子中包含您的代码。我可以为向上、向下、输入、输出和输出挂起设置单独的正则表达式吗?我不需要组合的正则表达式。感谢您的帮助,我能够解决这些问题。我可以为向上、向下、输入、输出和输出挂起设置单独的正则表达式吗?我没有正在寻找一个组合的。谢谢你的帮助,我能够找到它们。