鱼C论坛

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

[已解决]一个正则表达式 sub 的理解

[复制链接]
发表于 2017-7-21 12:13:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 夜深听雨 于 2017-7-21 12:35 编辑

我对以下代码理解还有点问题,我知道{ ( [^}]* ) }是表达的被{}包含的字,但是为什么要这么复杂呢?有人能详细解读一下{ ( [^}]* ) }各个符号什么意思吗我觉得我理解有问题,照我的理解的话我认为{\b\W+\b}就可以表示{}里的英文可是我试了一下发现不行,所以我肯定有一步理解错了,有大神能指点迷津吗?
  1. p = re.compile('section{ ( [^}]* ) }', re.VERBOSE)
  2. p.sub(r'subsection{\1}','section{First} section{second}')
  3. 'subsection{First} subsection{second}'
复制代码
最佳答案
2017-7-21 17:16:05
夜深听雨 发表于 2017-7-21 16:04
我明白[^}]*是除了}之外的字符并且出现次数大于等于1,我的问题是为什么用这样的表达来表示{}里的英文, ...

可以的
  1. >>> p = re.compile(r'section{(\b\w+\b)}', re.VERBOSE)
  2. >>> p.sub(r'subsection{\1}','section{First} section{second}')
  3. 'subsection{First} subsection{second}'
  4. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-21 12:30:55 | 显示全部楼层
  1. r'section\{([^}]*)\}'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 12:37:18 | 显示全部楼层

原代码是可以得到第三行的结果的,我的问题是我不懂为什么要用{ ( [^}]* ) }才可以表示{}里的英文
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-21 14:05:43 | 显示全部楼层
本帖最后由 Krant5 于 2017-7-21 14:06 编辑

里面使用了捕获组`( )`,这样才能使用 \1 调用
  1. p = re.compile('section{ ( [^}]* ) }', re.VERBOSE)
  2. p.sub(r'subsection{\1}','section{First} section{second}')
  3. 'subsection{First} subsection{second}'
复制代码


满意请采纳!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 16:04:29 | 显示全部楼层
Krant5 发表于 2017-7-21 14:05
里面使用了捕获组`( )`,这样才能使用 \1 调用

我明白[^}]*是除了}之外的字符并且出现次数大于等于1,我的问题是为什么用这样的表达来表示{}里的英文,用专门表示单词的\bXX\b不是更简单吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-21 17:16:05 | 显示全部楼层    本楼为最佳答案   
夜深听雨 发表于 2017-7-21 16:04
我明白[^}]*是除了}之外的字符并且出现次数大于等于1,我的问题是为什么用这样的表达来表示{}里的英文, ...

可以的
  1. >>> p = re.compile(r'section{(\b\w+\b)}', re.VERBOSE)
  2. >>> p.sub(r'subsection{\1}','section{First} section{second}')
  3. 'subsection{First} subsection{second}'
  4. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 22:28:36 | 显示全部楼层

明白了,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 21:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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