Python 查找接口
我不擅长正则表达式。我需要帮助识别以单词Fast/Giga开头的行的第一个单词。我尝试了RegExPython 查找接口,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
“^\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()获取组,其中应仅包含组名。如果您无法解决此问题,请在您的帖子中包含您的代码。我可以为向上、向下、输入、输出和输出挂起设置单独的正则表达式吗?我不需要组合的正则表达式。感谢您的帮助,我能够解决这些问题。我可以为向上、向下、输入、输出和输出挂起设置单独的正则表达式吗?我没有正在寻找一个组合的。谢谢你的帮助,我能够找到它们。