在python正则表达式中,re.sub如何与管道字符一起工作?

2024-10-01 13:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图弄明白Python是如何删除字符串两端的空格的。下面是我所指的代码,这是我尝试重新创建strip()函数的第一步:

#! python3
#myStrip.py - I will be recreating the strip function in python
import re

def stripFunc(stringToStrip,character):
    
    if character == '':
        whiteSpRegex = re.compile(r'^\s+|\s+$')
        finishedString = whiteSpRegex.sub('',stringToStrip)
        return finishedString
        
    else:
        otherRegex = re.compile(rf'^{character}+|{character}+$')
        finishedString = otherRegex.sub('',stringToStrip)
        return finishedString
        
    
    
testString = ' Something with spaces on the ends '
finalR = stripFunc(testString, '')

在这个场景中,函数的执行与我希望的完全一样,但我不明白为什么,特别是,如何删除末尾的空间。我认为这个正则表达式会,为了:

  1. 在字符串的开头查找一个包含1个或多个空格的段,然后继续在“”中执行sub,或
  2. 在字符串末尾查找一个带有1个或多个空格的段,然后继续“中的子段”

相反,它所做的似乎是正确地使用正则表达式捕获整个表达式,并基于我在管道正则表达式中包含的两部分在“”中进行子绑定

我错过了什么?管道不应该只抓取第一根绳子吗


Tags: the函数字符串rereturnstrip空格compile
1条回答
网友
1楼 · 发布于 2024-10-01 13:36:19

正则表达式将匹配交替符号两侧的模式。正如您所说,它将匹配行开始或结束处的空格。但是re.sub对字符串中的所有匹配项执行替换。考虑“FO”。前面的空间已匹配并移除。但是re.sub继续在字符串中搜索其他模式。找到末端的空间,并将其删除

相关问题 更多 >