Python正则表达式匹配需求:匹配指定模式并忽略@.子串
解决方案
要实现匹配目标字符且忽略@.中的.,可以使用负向零宽断言排除特定场景,最终正则表达式如下:
(?<!@)\.|\[\?|]
正则规则说明
(?<!@)\.:匹配前面不是@的.,通过负向预查(?<!@)确保当前.的前一个字符不是@,从而跳过@.中的.\[\?:匹配字面量[?(转义[和?是因为它们在正则中有特殊含义)]:匹配字面量]
Python 代码示例
import re target_str = '.test[?(@.foo=="bazz")].boo' match_pattern = r'(?<!@)\.|\[\?|]' # 获取所有匹配项 result = re.findall(match_pattern, target_str) print(result) # 输出: ['.', '[?', ']', '.'] # 高亮匹配内容(模拟需求中的高亮效果) highlighted = re.sub(match_pattern, r'`\g<0>`', target_str) print(highlighted) # 输出: `.`test`[?`(@.foo=="bazz")`]`.`boo`
内容的提问来源于stack exchange,提问作者phaseTiny
相关产品推荐
相关产品推荐

