如何在Python中动态生成含用户输入值的正则表达式?
正确动态生成正则表达式的方法
你之前的问题出在错误把Python的字符串前缀r当成了正则模式的一部分,拼出来的字符串实际包含了r'和'这些多余内容,导致正则匹配逻辑完全出错。正确的做法是只构造正则模式本身,不需要把r''语法糖包含进去:
方法一:使用f-string(推荐)
如果你用的是Python 3.6及以上版本,直接用带r前缀的f-string最简洁:room_number = input("输入房间号:") # 比如输入5 pattern = rf'\b{room_number}\b' # 后续直接用这个pattern调用re模块方法,比如re.search(pattern, 目标文本)这样生成的
pattern就是\b5\b,和你想要的r'\b5\b'效果完全一致。方法二:字符串拼接
旧版本Python可以用字符串拼接的方式:room_number = str(input("输入房间号:")) # 确保是字符串类型 pattern = r'\b' + room_number + r'\b'这里给每个片段加
r前缀是为了避免转义问题,拼接后同样能得到正确的正则模式。
额外提醒:如果输入的room_number包含正则特殊字符(比如., *, ?这类),一定要用re.escape()转义,防止破坏正则逻辑:
import re room_number = input("输入房间号:") pattern = rf'\b{re.escape(room_number)}\b'
内容的提问来源于stack exchange,提问作者Anshul Gupta
相关产品推荐
相关产品推荐

