You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

re.search中使用|运算符触发TypeError的问题及解决方法

解决正则表达式中|使用的报错问题

嘿,这个坑我之前也踩过!你遇到的TypeError完全是因为Python把你写的"UP"|"DOWN"当成了字符串的位运算操作,但字符串根本不支持|这个位运算符,自然就报错啦。

正确的修复方法有这几种:

1. 把所有匹配项放到同一个正则字符串里

把|作为正则语法的一部分,包裹在同一个字符串中,这样re.search就能识别这是“或”的匹配规则:

import re
moves = input("Enter your moves: ")
# 把所有方向用|分隔,放在同一个正则模式字符串里
m = re.search(r"UP|DOWN|LEFT|RIGHT", moves)
if m:
    print(f"找到有效方向:{m.group()}")
else:
    print("没有找到有效方向")

这里用r""原始字符串是为了避免不必要的转义问题,让正则表达式更清晰。

2. 动态生成正则模式(适合选项较多的情况)

如果以后要添加更多方向,直接修改列表就可以,不用手动改正则字符串:

import re
# 把所有方向存在列表里
valid_directions = ["UP", "DOWN", "LEFT", "RIGHT"]
# 用|把列表元素拼接成正则模式
pattern = re.compile("|".join(valid_directions))
moves = input("Enter your moves: ")
m = pattern.search(moves)

3. 不用正则,用更简单的in判断

如果只是单纯判断字符串是否包含其中某个方向,其实没必要用正则,用any()结合in操作更直观:

valid_directions = {"UP", "DOWN", "LEFT", "RIGHT"}
moves = input("Enter your moves: ")
has_valid_dir = any(dir in moves for dir in valid_directions)
if has_valid_dir:
    print("包含有效方向")
else:
    print("不包含有效方向")

核心问题就是你之前把|用在了字符串之间,而不是作为正则表达式的语法写在同一个字符串里,调整一下写法就搞定啦!

内容的提问来源于stack exchange,提问作者Gwen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:26:21