Python中正则表达式实现同时含逗号与短横的字符串匹配方法
同时包含逗号与短横的正则匹配实现
本次匹配要求为:待匹配字符串只要同时存在逗号(,)、短横(-)两个字符即可命中,不限制二者的出现顺序、前后附带的各类字符内容。
正则表达式设计
通过正向零宽断言实现最简洁的匹配逻辑,无需枚举两种字符的先后分支:^(?=.*,)(?=.*-).*$
各部分的作用说明:
^标记字符串起始位置,避免出现局部匹配的偏差(?=.*,)零宽正向断言:校验字符串任意位置存在逗号(?=.*-)零宽正向断言:校验字符串任意位置存在短横.*$匹配完整字符串内容,保证整体匹配的准确性
测试字符串匹配结果
对照给出的测试列表,实际命中情况如下:
1,-102a:命中(逗号在前,短横在后)1,123-f:命中(逗号在前,短横在后)1943dsa:未命中(两个目标字符均不存在)-da238,:命中(短横在前,逗号在后)-,dwjqi92:命中(短横、逗号相邻出现)
Python 运行示例
import re # 编译匹配规则 match_rule = re.compile(r'^(?=.*,)(?=.*-).*$') test_cases = [ "1,-102a", "1,123-f", "1943dsa", "-da238,", "-,dwjqi92" ] for case in test_cases: is_matched = bool(match_rule.fullmatch(case)) print(f"测试字符串 {case}:{'命中' if is_matched else '未命中'}")
代码运行后会输出4条命中、1条未命中的结果,完全符合之前定好的匹配要求。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

