我不明白我做错了什么。我只需要提取路由器的名称和端口号。
路由器名称是“C1900_ROUTER1_SR7
”,端口是“4/1/4”,它可以存在“B:C1900_ROUTER1_SR7
……”而不是“A:C1900_ROUTER1_SR7
……”
string = "A:C1900_ROUTER1_SR7#
A:C1900_ROUTER1_SR7# echo "<team:script>"
<team:script>
A:C1900_ROUTER1_SR7# /environment no more
A:C1900_ROUTER1_SR7#
A:C1900_ROUTER1_SR7# show port 4/1/4
"
regex_S2 = '(A|B):(?P<routername>.*?)#\s*show port\s*(?P<port>.*?)\s*\n'
match_L0_iter = re.findall(regex_S2, string, flags=re.DOTALL)
routername捕获的组结果="C1900_ROUTER1_SR7# A:C1900_ROUTER1_SR7# echo "<pnm:script>" <pnm:script> A:C1900_ROUTER1_SR7# /environment no more A:C1900_ROUTER1_SR7# A:C1900_ROUTER1_SR7"
您可以更新模式以匹配结尾处的非空白字符,而不是非贪婪的
.*?
要匹配路由器名称,还可以使用negated character class[^#]+
匹配除#
之外的任何字符要匹配A或B,可以使用字符类。你知道吗
Regex demo
如果必须匹配行的其余部分(包括换行符),则可以在模式中附加
\s*\n
。你知道吗相关问题 更多 >
编程相关推荐