Python中文
首页
教程
问答
标签
搜索
登录
注册
Python正则表达式将方括号内的文本替换为方括号的内容
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图编写一个Python函数,用大括号的内容替换大括号包围的文本实例,而不使用大括号对。例如:</p> <p><code>foo {} bar {baz}</code>将变成{<cd2>}。在</p> <p>我创建的匹配模式是<code>{[^{}]+}</code>,也就是说,一些文本不包含大括号(以防止重叠匹配),并由一组大括号包围。在</p> <p>显而易见的解决方案是在我的模式中使用<code>re.sub</code>,我发现我可以用<code>\g<0></code>引用匹配的文本:</p> <pre><code>>>> re.sub("{[^{}]+}", "A \g<0> B", "foo {} bar {baz}") 'foo {} bar A {baz} B' </code></pre> <p>所以没问题。然而,我一直在讨论如何从引用的文本中删去方括号。如果我尝试对替换字符串应用范围:</p> ^{pr2}$ <p>范围在<code>\g<0></code>解析为匹配文本之前应用,它修剪前导<code>\</code>和尾随{<cd8>},只留下{<cd9>},没有特殊意义。在</p> <p>我还尝试定义一个函数来执行修剪:</p> <pre><code>def trimBraces(string): return string[1:-1] </code></pre> <p>但不出所料,这并没有改变任何东西。在</p> <pre><code>>>> re.sub("{[^{}]+}", trimBraces("\g<0>"), "foo{}bar{baz}") 'foo{}barg<0' </code></pre> <p>我错过了什么?提前致谢。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以使用<em>捕获组</em>替换部分匹配:</p> <pre><code>>>> re.sub(r"{([^{}]+)}", r"\1", "foo{}bar{baz}") 'foo{}barbaz' >>> re.sub(r"{([^{}]+)}", r"\1", "foo {} bar {baz}") 'foo {} bar baz' </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
1 回答
如何在乒乓球游戏中阻止球
10 回答
如何在乘法和模中不乘空间?
8 回答
如何在乘法和除以2个不同的数字之间进行交换?
1 回答
如何在也是数据一部分的单个字符上拆分大字符串
9 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
1 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
9 回答
如何在事件中心只接收最近的数据
1 回答
如何在事件发生之前保持云函数运行?
10 回答
如何在事件发生后使页面重定向到同一页面
4 回答
如何在事件回调之间保持python生成器的状态
3 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
7 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
6 回答
如何在事件处理程序中访问外部对象?
9 回答
如何在事件循环中将协程打包为正常函数?
4 回答
如何在事件循环之外运行协同程序?
3 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
10 回答
如何在事件文件中只保留一份摘要?
7 回答
如何在事件模板中添加事件
6 回答