鱼C论坛

 找回密码
 立即注册
查看: 1894|回复: 1

[已解决]关于正则表达式的不明之处

[复制链接]
发表于 2022-4-21 15:54:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、下面用法有何区别?好像返回结果都一样啊,其中第1个代码里的小写字母r,好像小甲鱼在正则表达式章节中未提及它的作用

>>> re.findall(r'[^a-z]', 'FishCFishC\n.com!')
['F', 'C', 'F', 'C', '\n', '.', '!']
>>> re.findall('[^a-z]', 'FishCFishC\n.com!')
['F', 'C', 'F', 'C', '\n', '.', '!']

>>> re.search(r'[^a-z]', 'FishCFishC\n.com!')
<re.Match object; span=(0, 1), match='F'>
>>> re.search('[^a-z]', 'FishCFishC\n.com!')
<re.Match object; span=(0, 1), match='F'>

2、下面代码中<.+>是什么意思?小甲鱼在该章节中好像也没有说的非常清楚耶

>>> s = '<html><title>I love FishC.com!</title></html>'
>>> re.search('<.+>', s)
<re.Match object; span=(0, 45), match='<html><title>I love FishC.com!</title></html>'>
>>> re.search(r'<.+>', s)
<re.Match object; span=(0, 45), match='<html><title>I love FishC.com!</title></html>'>
>>> re.findall('<.+>', s)
['<html><title>I love FishC.com!</title></html>']
>>> re.findall(r'<.+>', s)
['<html><title>I love FishC.com!</title></html>']
最佳答案
2022-4-21 16:05:04
本帖最后由 isdkz 于 2022-4-21 16:08 编辑

1、r 代表的是原始字符串,就是取消 \ 的转义作用,

比如 '\n' 代表的是一个换行,而 r'\n' 代表一个反斜杠加上一个 n 组成的字符串,

如果没有反斜杠或者不会跟反斜杠组成转义字符,那你加 r 和不加 r 是没有区别的,

在正则表达式中最好加上 r,因为正则表达式中会有可能用上反斜杠,

2、<.+> 中的尖括号在这里没有任何特殊作用就是匹配普通的尖括号

尖括号只会在小括号里面有特殊作用,在断言和命名分组那里会用到,

尖括号中间有 .+ 就是说匹配尖括号里面有一个以上任意字符(. 匹配任意字符,+ 匹配一次或多次)的字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-21 16:05:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-4-21 16:08 编辑

1、r 代表的是原始字符串,就是取消 \ 的转义作用,

比如 '\n' 代表的是一个换行,而 r'\n' 代表一个反斜杠加上一个 n 组成的字符串,

如果没有反斜杠或者不会跟反斜杠组成转义字符,那你加 r 和不加 r 是没有区别的,

在正则表达式中最好加上 r,因为正则表达式中会有可能用上反斜杠,

2、<.+> 中的尖括号在这里没有任何特殊作用就是匹配普通的尖括号

尖括号只会在小括号里面有特殊作用,在断言和命名分组那里会用到,

尖括号中间有 .+ 就是说匹配尖括号里面有一个以上任意字符(. 匹配任意字符,+ 匹配一次或多次)的字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 17:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表