混淆python中的正则表达式

光盘

我对以下三种模式感到困惑,有人会更详细地说明吗?

## IPython with Python 2.7.3
In [62]: re.findall(r'[a-z]*',"f233op")
Out[62]: ['f', '', '', '', 'op', '']  ## why does the last '' come out?

In [63]: re.findall(r'([a-z])*',"f233op")
Out[63]: ['f', '', '', '', 'p', '']  ## why does the character 'o' get lost?

In [64]: re.findall(r'([a-z]*)',"f233op")
Out[64]: ['f', '', '', '', 'op', '']  ## what's the different than line 63 above?
威姆勒

例子1

re.findall(r'[a-z]*',"f233op")

此模式匹配零个或多个小写字母字符的实例。零或更多部分在这里是关键,因为从字符串中每个索引位置开始的空匹配都与f匹配一样有效op返回的最后一个空字符串匹配从字符串(之间的位置的端部开始p$串的(结束)。

例子2

re.findall(r'([a-z])*',"f233op")

现在,您正在匹配由单个小写字母字符组成的字符组。o不再返回,因为这是一个贪婪的搜索,最后有效的匹配组将被退回。因此,如果将字符串更改为f233op12free则将返回最终值,但不会返回前一个fr同样,如果您p在字符串中取出,您仍然会看到该字符串o作为有效匹配项返回。

相反,如果您尝试通过添加?(例如([a-z])*?来使此正则表达式变得非贪婪,则返回的匹配集将全部为空字符串,因为有效的无匹配项优先于某些有效匹配项。

例子3

re.findall(r'([a-z]*)',"f233op")

匹配的字符没有什么不同,但是现在您将返回字符组,而不是原始匹配。此正则表达式查询的输出与第一个示例相同,但是您会注意到,如果添加其他匹配组,则会突然看到将每个匹配尝试的结果分组为元组的结果:

IN : re.findall(r'([a-z]*)([0-9]*)',"f233op")
OUT: [('f', '233'), ('op', ''), ('', '')]  

将其与相同的模式(减去括号(组))进行对比,您将看到它们为何如此重要的原因:

IN : re.findall(r'[a-z]*[0-9]*',"f233op")
OUT: ['f233', 'op', ''] 

也...

将这样的正则表达式模式插入到Regexplained之类的正则表达式图生成器中以查看模式匹配逻辑如何工作可能会很有用例如,作为正则表达式为什么总是返回空字符串匹配的解释,请看一下模式[a-z]*之间的区别[a-z]+

如果您遇到困难,请不要忘记检查Python文档中的re,它们实际上为标准regex语法提供了非常出色的解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python正则表达式混淆

来自分类Dev

Python正则表达式混淆

来自分类Dev

正则表达式中多个匹配项的混淆

来自分类Dev

正则表达式混淆JavaScript

来自分类Dev

与正则表达式混淆

来自分类Dev

单独的正则表达式混淆

来自分类Dev

python文件路径在pycharm正则表达式混淆中失败

来自分类Dev

python中的正则表达式

来自分类Dev

python中的正则表达式

来自分类Dev

python中的正则表达式*

来自分类Dev

python中的正则表达式

来自分类Dev

正则表达式的正则表达式在Python中不匹配

来自分类Dev

与Groovy正则表达式匹配混淆

来自分类Dev

正则表达式分组混淆简单示例

来自分类Dev

字符类正则表达式混淆

来自分类Dev

与Linux混淆找到正则表达式

来自分类Dev

Java正则表达式?(expr){num} 混淆?

来自分类Dev

Python中可选字段的正则表达式

来自分类Dev

在Python正则表达式中匹配\ [\]

来自分类Dev

python中的正则表达式逻辑

来自分类Dev

正则表达式用于python中的单词排除

来自分类Dev

在Python中通过正则表达式分解CSV

来自分类Dev

Python中的正则表达式无法正确匹配

来自分类Dev

使用正则表达式在Python中解析XML

来自分类Dev

python中的组正则表达式

来自分类Dev

python中的正则表达式问题

来自分类Dev

Python公式替换中的正则表达式

来自分类Dev

在Python正则表达式中循环遍历组

来自分类Dev

正则表达式在python中匹配并替换