Python正则如何匹配无VEL/ACC前缀的指定R.A.O.S字符串
问题场景
现有名为my_file.txt的文本文件,每行前存在不定数量的空白字符,文件内容如下:
R.A.O.S-VARIATION WITH WAVE PERIOD/FREQUENCY VEL R.A.O.S-VARIATION WITH WAVE PERIOD/FREQUENCY ACC R.A.O.S-VARIATION WITH WAVE PERIOD/FREQUENCY SOME OTHER STRING
需要通过re.search(regex, line)方法匹配字符串R.A.O.S-VARIATION WITH WAVE PERIOD/FREQUENCY,排除前置带有VEL或ACC的两个同类匹配项,正则中无需手动枚举所有前置空白字符。
正则写法
可直接使用的正则表达式如下:
^\s*(?!VEL|ACC)R\.A\.O\.S-VARIATION WITH WAVE PERIOD/FREQUENCY\s*$
规则说明
^\s*:从行首开始匹配任意数量的空白字符,自动适配行首不定长度的空格,无需手动枚举(?!VEL|ACC):负向先行断言,校验空白字符后的首个连续字符段不是VEL或ACC,直接过滤掉带两个前缀的干扰行R\.A\.O\.S:对字符串中的.做转义处理——.在正则中是匹配任意单字符的特殊元字符,转义后才能精确匹配字面量的点号,避免误匹配- 末尾的
\s*$用于兼容行尾可能存在的多余空白字符,若确定目标行末尾无多余字符可省略该段
匹配效果验证:
- 第一行:行首空白后直接跟目标字符串,断言校验通过,匹配成功
- 第二行:行首空白后为
VEL,断言校验失败,不匹配 - 第三行:行首空白后为
ACC,断言校验失败,不匹配 - 第四行:无目标字符串,不匹配
内容的提问来源于stack exchange,提问作者Jeroen
相关产品推荐
相关产品推荐

