Python的字符串自己也用\转义

s = 'ABC\\-001' # Python的字符串

# 对应的正则表达式字符串变成:

# 'ABC\-001'

建议使用Python的r前缀,就不用考虑转义的问题了

s = r'ABC\-001' # Python的字符串

# 对应的正则表达式字符串不变:

# 'ABC\-001'

关于斜杠 / 和反斜杠 \ (网图,侵删)

Python 字符串前缀r、u、b、f含义 1、r/R表示raw string(原始字符串) 在普通字符串中,反斜线是转义符,代表一些特殊的内容,如换行符\n,前缀r表示该字符串是原始字符串,即\不是转义符,只是单纯的一个符号。常用于特殊的字符如换行符、正则表达式、文件路径。

str1 = "Hello\nWorld"

str2 = r"Hello \n World"

print(str1)

print(str2)

# 打印结果如下:

Hello

World

Hello \n World

2、u/U表示unicode string(unicode编码字符串) 前缀u表示该字符串是unicode编码,Python2中用,用在含有中文字符的字符串前,防止因为编码问题,导致中文出现乱码。另外一般要在文件开关标明编码方式采用utf8。Python3中,所有字符串默认都是unicode字符串。 3、b/B表示byte string(转换成bytes类型) 常用在如网络编程中,服务器和浏览器只认bytes类型数据。如:send 函数的参数和 recv 函数的返回值都是 bytes 类型。 4、f/F表示format string(格式化字符串) 前缀f用来格式化字符串。可以看出f前缀可以更方便的格式化字符串,比format()方法可读性高且使用方便。

name = "张三"

age = 20

print(f"我叫{name},今年{age}岁。") # 我叫张三,今年20岁。

print("我叫{name},今年{age}岁。") # 我叫{name},今年{age}岁。

正则表达式(匹配字符串)

. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式

\d 能够匹配一个数字

\w 能够匹配一个字母或数字正

\s 能够匹配一个空格(也包括Tab等空白符),因此\s+表示至少有一个空格

* 表示任意个字符(包括0个)

+ 表示至少一个字符

? 表示0个或1个字符

.* 可以匹配任意长度的任意字符

.*? 非贪婪匹配,能完成匹配的情况下,尽可能匹配少的字符

举个例子解释非贪婪匹配

s='hello 1234567 world'

res = re.match('he.*(\d+).*rld$',s)

print(res.group(1)) #7, 因为he后面的.*把123456也匹配了

res = re.match('he.*?(\d+).*rld$',s)

print(res.group(1)) #1234567,因为从数字1开始\d+可以匹配,所以.*就停止匹配了

s='hello 1234567 world/python'

res1 = re.match('he.*?(\d).*rld/(.*?)',s)

print('res1',res1.group(2)) #空串,因为.*?尽可能少匹配

{n}表示n个字符

{n,m}表示n-m个字符

[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,长度是1-20个字符(前面1个字符+后面最多19个字符)

A|B能够匹配A或B,因此(P|p)ython能够匹配'Python'或者'python'

^表示行的开头,^\d表示必须以数字开头

$表示行的结束,\d$表示必须以数字结束

\d{3}\-\d{3,8} 可以匹配 '010-12345'

(?Pgroup) 的使用

例如(?P\d+)的意思就是命名一个名字为value的组,匹配规则符合后面的/d+

总结图 (网图,侵删)

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。