re模块

Posted 想54256

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块相关的知识,希望对你有一定的参考价值。

re模块

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  • 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
  • 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。

正则表达式匹配规则

python中的re模块

pattern = re.compile(r"\\d")   # r表示字符串不受\\n,\\d,\\w等转义字符影响,u表示是unicode字符串

pattern.match(str,begin,end)	# 起始位置,终止位置(是以切片的形式顾头不顾尾)    
# 从起始位置开始往后找,返回第一个符合规则的(返回的是match对象),只匹配一次

pattern.search(str,begin,end)
# 从随机位置开始往后找,返回第一个符合规则的(返回的也是match对象),只匹配一次

pattern.findall(str,begin,end)
# 匹配全部字符串,返回列表

pattern.split(str,count)	# 切割次数
# 分割字符串

pattern.sub(\'替换文字\',"字符串")

re.I ==> 忽略大小写    re.S ==> 全文匹配

用法

match:从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None

1)match(模式,搜索字符串,匹配模式)

>>> r = re.match("\\d+",\'1234sdacsazc\')
>>> r.group()
\'1234\'
>>> r.group(0)
\'1234\'

2)pattern=re.compile(模式)

  m=pattern.match("查询字符串")

search:浏览整个字符串去匹配第一个,未匹配成功返回None

search(pattern, string, flags=0)

# pattern: 正则模型
# string : 要匹配的字符串
# flags  : 匹配模式

findall:获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;

findall(pattern, string, flags=0)

# pattern: 正则模型
# string : 要匹配的字符串
# flags  : 匹配模式

split:根据正则匹配分割字符串

split(pattern, string, maxsplit=0, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# maxsplit:指定分割个数
# flags  : 匹配模式

sub:替换匹配成功的指定位置字符串

sub(pattern, repl, string, count=0, flags=0)
# pattern: 正则模型
# repl   : 要替换的字符串或可执行对象
# string : 要匹配的字符串
# count  : 指定匹配个数
# flags  : 匹配模式

paramiko模块

1)创建ssh连接

import paramiko

ssh = paramiko.SSHClient()      # 实例化ssh连接客户端
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   # 允许连接不在know_hosts文件中的主机

ssh.connect(\'ip地址\',22,\'用户名\',\'密码\')     # 创建ssh连接

stdin, stdout, stderr = ssh.exec_command("Linux命令")     # 输入,输出,错误

print(stdout.readlines())    # 打印输出,列表形式

ssh.close()     # 关闭ssh链接

小Tips:

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。从而导致无法登录。
2)从服务器上download文件

import paramiko

t = paramiko.Transport((\'IP地址\', 22))
t.connect(username= \'用户名\', password = \'密码\')

sftp = paramiko.SFTPClient.from_transport(t)    # 创建sftp连接

remotepath =\'./01.py\'   # 网络路径

localpath =\'./00.py\'    # 本地路径
sftp.get(remotepath, localpath)     # get文件

t.close()   # 关闭sftp连接

3)上传文件到服务器

import paramiko

t = paramiko.Transport(("ip地址",22))
t.connect(username = "用户名", password = "口令")

sftp = paramiko.SFTPClient.from_transport(t)

remotepath=\'./new.xml\'

localpath=\'./old.xml\'

sftp.put(localpath,remotepath)

t.close()

 

以上是关于re模块的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式 re模块基础

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

Python基础之re模块

如何有条件地将 C 代码片段编译到我的 Perl 模块?

python re模块findall()详解

Node.js JavaScript 片段中的跳过代码