假设我有这样一个字符串:
This is my (2019) awesome string (that I want to modify)
其中的日期必须保留,但没有括号。同时,括号里的所有东西都必须放进去。所以我想实现这一点:
This is my 2019 awesome string
我可以用这个来定位日期:
\b(201\d{1})\b
我也能用这个找到括号里的任何东西:
(\(.*\))
但我只想删除括号中没有日期的所有内容,否则我只想保留括号中的日期。有没有不使用if else
的方法?你知道吗
Tags:
在python3.5+中,您可以使用
如果有一个
(
+4个数字+)
,只保留这4个数字,否则,删除匹配项。你知道吗参见regex demo。你知道吗
细节
\((\d{4})\)
-(
,然后捕获匹配四位数字的组1,然后)
|
-或\([^()]*\)
-a(
,然后是除(
和)
之外的0+个字符,然后是)
。你知道吗替换只是对组1的值的
\1
反向引用。你知道吗注意:要在3.5之前的Python版本中使用此方法,必须使用lambda表达式作为替换参数(由于bug):
只需对
re.sub
进行两个嵌套调用即可:内部正则表达式在括号中查找4位数字并删除括号。外部的一个删除了括号中剩下的所有内容(包括开头的可选空格)。你知道吗
相关问题 更多 >
编程相关推荐