匹配endwith python

时间:2017-06-02 08:13:23

标签: python regex python-2.7 paramiko

我正在使用paramiko for ssh并等待检查以字符串结尾的提示。

实际以字符串结尾如下:

 RP/0/RSP0/CPU0:asr1#

我在代码中用来检查endwith是

#

下面是代码:

import paramiko
import re
import time
hostname = "10.10.10.10"
net_username = "user"
net_password = "password"
remote_conn_pre = paramiko.SSHClient()
remote_conn_pre.set_missing_host_key_policy(
     paramiko.AutoAddPolicy())
remote_conn_pre.connect(hostname, username=net_username, password=net_password,look_for_keys=False, allow_agent=False)
remote_conn = remote_conn_pre.invoke_shell()
buff = ''
while not buff.endswith('#'):
    resp = remote_conn.recv(9999)
    buff += resp
    print(resp)
remote_conn.send("\n")
buff = ''
while not buff.endswith('#'):
    resp = remote_conn.recv(9999)
    buff += resp
    print(resp)
remote_conn.send("ping 172.16.35.22\n")
time.sleep(2)
buff = ''
while not buff.endswith('#'):
    resp = remote_conn.recv(9999)
    buff += resp
    print resp

一切正常,即使我用“#”检查结束,但我想在这里仔细检查。我正在以正确的方式行事,还是我们还有其他更好的选择来实现这一目标

我的意思是以字符串“RP / 0 / RSP0 / CPU0:asr1#”结尾。

 "RP/" is constant 

如何使用匹配

 "RP/anything#"

1 个答案:

答案 0 :(得分:0)

如果您想使用python' regular expression module来增强搜索效果:

您必须使用re.match将正则表达式与字符串匹配:

  

re.match(pattern,string,flags = 0)

     

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。如果字符串与模式不匹配,则返回None;请注意,这与零长度匹配不同。

     

请注意,即使在MULTILINE模式下,re.match()也只会匹配字符串的开头而不是每行的开头。

     

如果要在字符串中的任何位置找到匹配项,请改用search()(另请参阅search()与match())。

您的问题有一个例子:     

import re # module for regular expression

string = "RP/0/RSP0/CPU0:asr1#"
match = re.match(r"^RP/[(\d|\w)|(/|:)]*#{1}$", string)
if (match):
    # The string match with the regular expression
else:
    # The string doesn't match the regular expression

如果您不知道如何使用正则表达式并希望练习它们,则可以使用此网站:regex101.com。该网站还有用于正则表达式的python模块。