Python/PySpark正则表达式:如何精准替换字符串中的特定模式
正则解决方案
直接使用以下正则表达式进行全局替换(替换为空字符串)即可一步完成需求:
(/[^,]+)|,
匹配逻辑说明
(/[^,]+):匹配所有以/开头,后续跟着任意非逗号字符的片段(直到遇到逗号或字符串结尾),这部分就是需要移除的/及后续内容;|,:同时匹配所有逗号,因为最终需要将保留的代码直接拼接,逗号也需移除;- 全局替换会把所有符合上述两种情况的内容全部删除,直接得到目标结果。
测试验证
- 输入字符串1:
ABS25C/18033C,25A/17972C→ 替换后得到ABS25C25A - 输入字符串2:
ABS300ABC→ 无匹配内容,保留原字符串ABS300ABC - 输入字符串3:
AS25C/18033C,25A/17972C,25B/18026C→ 替换后得到AS25C25A25B
之前正则出错的原因
你之前使用的(/.+,)是贪婪匹配,正则会从第一个/开始,一直匹配到最后一个逗号的位置,导致中间需要保留的25A等内容被误删。而使用[^,]+(否定字符类)会精准匹配到第一个逗号前的内容,彻底避免贪婪匹配的问题。
内容的提问来源于stack exchange,提问作者DBA2SparkDE
相关产品推荐
相关产品推荐

