python - Python RegEx 在分隔符之前和之后将文本与整个文本分组?
问题描述
我是一名 CS 学生,我们的教授给了我们这个我翻译得很差的“例子”,但它应该:
“获取内括号数据并去掉相关的括号,然后添加文本的其余部分,中间有一个空格”。
import re
pattern=re.compile(r'\(.*?\)')
res=pattern.search('(Today is a nice and sunny)day!)')
print(res.group())
我看到应该是什么结果:
(Today is a nice and sunny)
(Today is a nice and sunny day!)
但是代码只打印前者,我尝试通过将整个内容括在括号中并更改表达式来弄乱 res.groups() 但只是无法弄清楚如何使它产生一个在第一个停止的组)括号和一个忽略它的括号
解决方案
正则表达式不能以这种方式工作的原因是因为它不是以使用多个捕获组的方式编写的。为了解决这个问题,我创建了两个捕获组,一个将在第一个捕获,第二个将捕获剩余的一天部分。
import re
pattern = re.compile(r'(\(.*?\))(.*\))?')
res = pattern.search('(Today is a nice and sunny)day!)')
#This will print (Today is a nice and sunny)day!)
print(res.group())
#This will print (Today is a nice and sunny)
print(res.groups()[0])
然后我不得不单独调用res.group
andres.groups
因为res.group
将返回完整匹配res.groups
并将返回元组中的子匹配组。然后我索引返回res.groups
以获得第一个捕获组结果。
有关 Regex 中捕获组的信息,请查看此。
推荐阅读
- node.js - 通过 id 从 firebase 获取数据
- php - 从数据库中获取数组键(来自第 2 列)和数组值(来自第 1 列)
- html - 一台服务器上的 sitemap.xml 404 错误,而不是另一台服务器上的错误?
- linux - 有没有办法在 linux 命令提示符中包含当前分支名称变量?
- elasticsearch - 在 Elasticsearch 中对嵌套类型使用命名查询(matched_queries)?
- python - 在 datframe 的每一行中添加两个已经在字典中的字典
- html - 与设备无关的宽度,用于可读的单列布局
- python - f-string 表达式中的 TypeError - 'str' 对象不可调用
- vue.js - 为什么我的前端请求都发送到后端项目?
- python - 为什么 2**-1025 != 0.0 在 Python 中