如何用Python正则表达式解析特定格式的字符串?
正则表达式解析字符串:移除分号及指定区间内容
需求说明
输入字符串示例:
Stack;O&verflow;i%s;the;best!
期望解析结果:
Stack&verflow%sbest!
核心规则:当遇到;时,删除该符号直至下一个属于[;,)%&@]集合的字符之间的所有内容,最终需完全移除所有;。
错误尝试及问题
使用Python re 包时,曾尝试正则表达式:
^[^;].*[;,)%&@]
但匹配结果不符合预期,得到:
Stack;O&verflow;i%s;the;
可行解决方案
函数封装写法
import re def remove_semicolons(name): # 移除分号到指定终止符之间的内容 name = re.sub(';.*?(?=[;,)%&@])', '', name) # 移除剩余的所有分号 name = re.sub(';','',name) return name remove_semicolons('Stack;O&verflow;i%s;the;best!')
嵌套调用简洁写法
import re semicolon_string = 'Stack;O&verflow;i%s;the;best!' cleaned_string = re.sub(';','',re.sub(';.*?(?=[;,)%&@])', '', semicolon_string))
说明:第一个正则
;.*?(?=[;,)%&@])利用正向预查匹配;到目标终止符之间的内容并替换为空,再通过第二个正则移除所有残留的;,最终得到符合要求的字符串。
内容的提问来源于stack exchange,提问作者Pleasant Gopher
相关产品推荐
相关产品推荐

