Skip to main content
 首页 » 编程设计

Python 正则表达式 : Remove optional characters

2024年08月13日36fff_TT

我有一个带有可选字符的正则表达式模式,但是在输出中我想删除那些可选字符。示例:

string = 'a2017a12a'     
pattern =  re.compile("((20[0-9]{2})(.?)(0[1-9]|1[0-2]))") 
result = pattern.search(string) 
print(result) 

我可以进行这样的匹配,但我想要的输出是:

desired output = '201712' 

谢谢。

请您参考如下方法:

您已经捕获了组中的预期数据,现在您可以使用 re.sub 将整个匹配替换为 group1 和 group2 的内容。

尝试修改后的 Python 代码,

import re 
 
string = 'a2017a12a'     
pattern =  re.compile(".*(20[0-9]{2}).?(0[1-9]|1[0-2]).*") 
result = re.sub(pattern, r'\1\2', string) 
print(result) 

请注意,我是如何在模式周围添加 .* 的,因此数据周围的任何额外字符都会被匹配并被删除。此外,删除了不需要的额外括号。这也适用于文本周围可能有其他数字的字符串,例如 hello123 a2017a12a some other 99 numbers

输出,

201712 

Regex Demo