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

基于正则表达式实现模拟Python strip()方法的函数开发问询

Replicating Python's strip() with Regular Expressions

Got it, let's build this function that mirrors Python's built-in strip() method using regex. First, let's clarify: while the question mentions "removing all instances of specified characters" for the second argument, we're sticking to the actual behavior of str.strip()—which only removes characters from the start and end of the string, not the middle. We'll also make sure to handle regex-special characters properly so inputs like . or * don't break things.

Here's the full implementation:

import re

def stripas(tekstas, argum=None):
    # Case 1: No custom argument provided → strip whitespace from start/end
    if argum is None:
        return re.sub(r'^\s+|\s+$', '', tekstas)
    # Case 2: Custom characters provided → strip those from start/end
    else:
        # Escape special regex characters to avoid unexpected matching
        escaped_chars = re.escape(argum)
        # Build pattern: match one+ of the chars at string start OR end
        pattern = r'^[' + escaped_chars + r']+|[' + escaped_chars + r']+$'
        return re.sub(pattern, '', tekstas)

Let's break down the code:

  • Default whitespace handling: The regex r'^\s+|\s+$' targets one or more whitespace characters (\s+) at the start (^) or (|) end ($) of the string, replacing them with nothing—exactly what str.strip() does by default.
  • Custom character handling:
    • re.escape(argum) is critical here: it takes any characters with special regex meaning (like ., ?, *) and escapes them so they're treated as literal characters. For example, if you pass '.' as the second argument, it won't match every character—just actual dots.
    • The pattern r'^[escaped_chars]+|[escaped_chars]+$' creates a character set from the escaped input, then matches clusters of those characters at the start or end of the string to remove.

Example usage to test behavior:

# Default whitespace strip
print(stripas("   Hello, Stack Overflow!   "))  # Output: "Hello, Stack Overflow!"

# Custom character strip
print(stripas("###Python###", "#"))  # Output: "Python"
print(stripas("...abc123...", ".13"))  # Output: "abc2"
print(stripas("*Hello*?", "*?"))  # Output: "Hello"

If you did want to remove all instances of the specified characters (not just start/end), you'd modify the regex to r'[' + escaped_chars + r']+' (removing the ^ and $ anchors)—but that's a different behavior than strip().

内容的提问来源于stack exchange,提问作者Gintaras P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:05:54