python - 从字符串中去除大括号内最后出现的数字
问题描述
如果给定字符串中只有数字/数字,我想知道如何去除 ( ) 的最后一次出现及其内容。
下面的代码去除了字符串中的所有 ( )。
import regex
s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
s2 = "( 2,2,2) (GREATER) MINDS LIMITED ( closed )"
res = regex.sub(r'\s*(\((?>[^()]+|(?1))*\))$', '', s1)
res = regex.sub(r'\s*(\((?>[^()]+|(?1))*\))$', '', s2)
print(res)
这将删除字符串内的内容,但我只想删除字符串最后出现的 () 内的数字或数字
输出:
s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
s2 = "( 2,2,2) (GREATER) MINDS LIMITED ( closed )"
解决方案
您可以使用re.sub
否定前瞻断言来排除(...)
在最后一次匹配之后出现的任何其他术语。
s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
s2 = "( 2,2,2) (GREATER) MINDS LIMITED ( closed )"
out1 = re.sub(r'\(\s*\d+\s*\)(?!.*\([^)]*\))', '', s1)
out2 = re.sub(r'\(\s*\d+\s*\)(?!.*\([^)]*\))', '', s2)
print(out1)
print(out2)
这打印:
( 2,2,2) (GREATER) MINDS LIMITED
( 2,2,2) (GREATER) MINDS LIMITED ( closed )
推荐阅读
- prolog - 子句/2 中的参数没有充分实例化
- c++ - C++多线程关闭TCP连接
- python - 检查我的输入是否为空,以便不再将任何值添加到我的列表中,但是我正在努力进行检查
- node.js - 如何确保我在 firebase 中的 getUserProfile 云函数仅在登录用户的会话请求时才返回数据?
- flutter - Flutter如何防止在PageView中的特定区域滚动
- ruby-on-rails - 将内容从一个控制器添加到另一个控制器的索引
- c - XChangeProperty 无法写入剪贴板
- sql - 如何批量更改postgis脚本的脚本变量
- c - 分别打印二叉树的高度
- c# - Xamarin 中单一内容的 DataTemplate 选择