Python如何使用Regex将2个及以上连续$符号替换为单个空格
正则问题排查与解决方案
原正则不可用,错误原因如下:
- 你写的正则里用了方括号
[],括号内的所有字符会被解析为独立的匹配项集合,自动去重后等价于匹配'或者$两个字符,完全不符合只匹配连续$的需求 - 末尾的
?是惰性量词,会优先匹配最短的2个$,替换时会把更长的连续$拆成多次替换,虽然结果也能得到空格,但属于无意义的冗余写法 - 额外添加的单引号完全多余,会导致匹配到不该匹配的单引号字符
正确实现方案
匹配规则应该是:匹配连续出现2次及以上的$字符,正确正则为:
regex_pattern = r"\${2,}"
这里\$是转义$(因为$在正则里是行尾锚点,必须转义才能匹配字符本身),{2,}表示匹配前面的字符至少2次,默认贪婪匹配,会一次性匹配最长的连续$串。
完整Python示例代码
import re regex_pattern = r"\${2,}" test_strings = ['1', 'Patna City $$$$ $$$$$$$$View Details', 'Serial No:$$$$5$$$$ $$$$Deed No:$$$$5$$$$ $$$$Token No:$$$$7$$$$ $$$$Reg Year:2020', 'Anil Kumar Singh Alias Anil Kumar$$$$$$$$Executant$$$$$$$$Late. Harinandan Singh$$$$$$$$$$$$Md. Shahzad Ahmad$$$$$$$$Claimant$$$$$$$$Late. Md. Serajuddin', 'Anil Kumar Singh Alias Anil Kumar', 'Executant', 'Late. Harinandan Singh', 'Md. Shahzad Ahmad', 'Claimant', 'Late. Md. Serajuddin', 'Circle:Patna City Mauja: $$$$ $$$$Khata : na$$$$ $$$$Plot :2497 Area(in Decimal):1.5002 Land Type :Res. Branch Road Land Value :1520000 MVR Value :1000000', 'Circle:Patna City Mauja: $$$$ $$$$Khata : na$$$$ $$$$Plot :2497 Area(in Decimal):1.5002 Land Type :Res. Branch Road Land Value :1520000 MVR Value :1000000'] processed_strings = [re.sub(regex_pattern, ' ', s) for s in test_strings]
内容的提问来源于stack exchange,提问作者techwreck
相关产品推荐
相关产品推荐

