鱼C论坛

 找回密码
 立即注册
查看: 946|回复: 6

[已解决]【求助】正则表达式详解六的一段代码。

[复制链接]
发表于 2019-10-2 14:29:31 | 显示全部楼层 |阅读模式

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

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

x
>>> p = re.compile('section{ ( [^}]* ) }', re.VERBOSE)
>>> p.sub(r'subsection{\1}','section{First} section{second}')
'subsection{First} subsection{second}'
请问这段代码中的 { ( [^}]* ) }代表是什么?有大神能给我详细解释一下吗?
最佳答案
2019-10-2 16:11:41
首先,明白 []   用于表示一个字符集合。
其次,^ 在[]中代表排除的意思(自己认为) [^}] 就是除了右花括号}以外所有的字符
        再 就是   * 对它前面的正则式匹配0到任意次重复,  0 -------无穷
                 +  对它前面的正则式匹配1到任意次重复。 1-------无穷
                 ? 对它前面的正则式匹配0到1次重复。     0 -------1
最后   [^}]*                  就是除了右花括号}以外所有的字符,可能匹配到 0 ----无穷 个
        ( [^}]* )             ( )捕获组
        section{ ( [^}]* ) }   section{ 和}是界定范围 ,就是以 section{开头以}结尾,中间除了}以外0到多个字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-2 15:58:42 | 显示全部楼层
同学你好,我们可以这样来进行分析,在这里的{}为单纯匹配{},向内一层的()代表作为一个组(后续通过\1定位第一组),再向内一层[^表达式]代表除表达式以外的内容,那这里的表达式就是},后面紧接一个*,表示匹配前面整个表达式0个或多个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-2 16:03:18 | 显示全部楼层
本帖最后由 大西瓜吃吃 于 2019-10-2 16:15 编辑

对的,我上面没有问题,但是如果只是想满足如上替换需求的话大可不必写成这样,你这个问题的关键在于知道[^re]和\数字的含义,这些用法均可以在各类文档种找到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-2 16:11:41 | 显示全部楼层    本楼为最佳答案   
首先,明白 []   用于表示一个字符集合。
其次,^ 在[]中代表排除的意思(自己认为) [^}] 就是除了右花括号}以外所有的字符
        再 就是   * 对它前面的正则式匹配0到任意次重复,  0 -------无穷
                 +  对它前面的正则式匹配1到任意次重复。 1-------无穷
                 ? 对它前面的正则式匹配0到1次重复。     0 -------1
最后   [^}]*                  就是除了右花括号}以外所有的字符,可能匹配到 0 ----无穷 个
        ( [^}]* )             ( )捕获组
        section{ ( [^}]* ) }   section{ 和}是界定范围 ,就是以 section{开头以}结尾,中间除了}以外0到多个字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-2 16:11:50 | 显示全部楼层
本帖最后由 kaohsing 于 2019-10-2 16:13 编辑

重复了。                                    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-2 16:58:37 | 显示全部楼层
kaohsing 发表于 2019-10-2 16:11
首先,明白 []   用于表示一个字符集合。
其次,^ 在[]中代表排除的意思(自己认为) [^}] 就是除了右花 ...

感谢!我知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-2 16:59:14 | 显示全部楼层
大西瓜吃吃 发表于 2019-10-2 16:03
对的,我上面没有问题,但是如果只是想满足如上替换需求的话大可不必写成这样,你这个问题的关键在于 ...

感谢!我知道了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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