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

在正则表达式中使用变量遇到问题的技术求助

解决正则表达式中使用变量实现自定义strip函数的问题

我明白你现在卡在怎么把变量融入正则表达式来实现自定义strip函数上了,咱们一步一步来搞定它!

首先看你代码里的问题:what_to_strip = re.compile(r + re.escape(thing2))这一行有明显问题——这里的r不是字符串前缀,直接写会报错,而且你还没把实际要处理的what_to_strip变量用起来,反而用了一个硬编码的thing2 = 'L',这肯定不是你想要的效果对吧?

正确的实现思路

Python原生的strip()函数是移除字符串开头和结尾的指定字符(默认是空白字符),用正则实现的话,需要覆盖两种核心场景:

  • 如果用户没传入what_to_strip或者传入空值,就默认匹配空白字符(空格、制表符、换行等);
  • 如果传入了指定字符,必须先用re.escape()转义特殊字符(比如*、.、?这些在正则里有特殊含义的字符),避免正则语法出错;
  • 最后用正则匹配字符串开头和结尾的目标字符,替换成空字符串即可。

修正后的完整代码

import re

# 接收用户输入
print('Enter 1st Argument: value to strip.')
user_input = input()
print('Enter 2nd Argument: The value to strip off the 1st value (leave blank for whitespace).')
strip_value = input()

# 实现自定义strip函数
def regex_strip(value, what_to_strip=None):
    # 处理默认情况:未指定移除字符时匹配空白
    if what_to_strip is None or what_to_strip == '':
        pattern = re.compile(r'^\s+|\s+$')
    else:
        # 转义用户输入中的正则特殊字符,避免语法错误
        escaped_chars = re.escape(what_to_strip)
        # 用原始字符串拼接正则模式:匹配开头/结尾的指定字符(一次或多次)
        pattern = re.compile(rf'^[{escaped_chars}]+|[{escaped_chars}]+$')
    # 替换匹配到的内容为空字符串,返回处理结果
    return pattern.sub('', value)

# 执行并输出结果
result = regex_strip(user_input, strip_value)
print(f"处理后的结果: '{result}'")

关键代码解释

  • re.escape(what_to_strip):把用户输入里的正则特殊符号转义成普通字符,比如用户输入.,转义后会变成\.,确保正则能精准匹配用户指定的内容;
  • rf'^[{escaped_chars}]+|[{escaped_chars}]+$':正则模式分两部分,^[{escaped_chars}]+匹配字符串开头的指定字符(一次或多次),[{escaped_chars}]+$匹配字符串结尾的指定字符(一次或多次),|表示逻辑“或”;
  • pattern.sub('', value):将匹配到的开头/结尾目标字符替换为空,完美复刻strip()的核心功能。

测试示例

比如你输入第一个值是###Hello World###,第二个值是#,处理后会得到Hello World;如果第二个值留空,输入 Hello World ,处理后会得到Hello World。

内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:54:20