Strip()函数使用Regex

时间:2018-04-27 05:08:12

标签: python regex

我正在尝试使用Regex重新创建python的$('#start-date-time-datepicker').datetimepicker({ minDate: moment(), sideBySide: true, daysOfWeekDisabled: [0,6] }); $('#end-date-time-datepicker').datetimepicker({ minDate: $('#start-date-time-datepicker').val(), sideBySide: true, daysOfWeekDisabled: [0,6] }); 函数。这是Automate the Boring Stuff with Python的最后一个练习题。这是我的代码:

strip()

在第16行中,如果我用任何随机字符替换(char),程序正在运行。但是,我似乎无法在那里制作自定义变量。我在那里做错了什么?

编辑:Stack说这是this question的副本。这不是因为它' 纯粹围绕正则表达式不仅仅是Python。

6 个答案:

答案 0 :(得分:2)

我就是用这么简单的方式做到的,而且对我很有用。

import re

def my_strip(string, char=''):
    regex_sub = re.sub(r'^\s+|\s+$', char, string)
    return(regex_sub)

答案 1 :(得分:1)

这是简化版。

import re
def striper(x, y=""):
    if y == "":
        rex = re.compile(r'^(\s*)|(\s)*$')
        xy = rex.sub("", x)
        return xy
    else:
        stripContext = re.sub(r'^{}+|{}+|{}+$'.format(y, y, y), "", x)
        return stripContext
print(striper('abcdfsdfdsabc', 'abc'))

答案 2 :(得分:1)

您可以使用一个可选变量进行一次编译。因为没有转义字符,所以不需要原始语句。

import re

def regexStrip(theString, stripChar='\s'):
    theRegex = re.compile(f'^({stripChar})*|({stripChar})*$')
    stripContext = theRegex.sub('', theString)
    return stripContext

print(regexStrip('SpamEggsSpam','Spam'))
print(regexStrip('SpamSpamSpam$Eggs$SpamSpamSpam','Spam'))
print(regexStrip('    Eggs    '))
print(regexStrip('   $ Eggs $   '))

答案 3 :(得分:0)

你可以使用re.sub

这样做
import re

def strip(string, chars=' \n\r\t'):
    return re.sub(r'(?:^[{chars}]+)|(?:[{chars}]+$)'.format(chars=re.escape(chars)), '', string)

它使用re.escape,因此用户可以输入具有正则表达式字符串含义的\[等字符。它还使用^$正则表达式标记,以便只匹配字符串前端和末尾的匹配字符组。

答案 4 :(得分:0)

我稍微改变了你的脚本,

def strip(char, string):
    if char == "":                # not "stripChar"
        regsp = re.compile(r'^\s+|\s+$')
        stripContext = regsp.sub("", context)
        return stripContext
    else:                       # some changes are here in this else statement
        stripContext = re.sub(r'^{}+|{}+$'.format(char,char), "", strip("",string))
        return stripContext

print(strip(stripChar, context))

输出:

Enter character to strip: e
Enter string to strip:   efdsafdsaeeeeeeeeee
fdsafdsa

答案 5 :(得分:0)

要拥有lstrip和rstrip,只需将Brendan的答案修改为以下内容:

import regex as re

def lregstrip(string, chars=' \n\r\t\f\v'):
    return re.sub(r'(?:^[{chars}]+)'.format(chars=re.escape(chars)), '', string)

def rregstrip(string, chars=' \n\r\t\f\v'):
    return re.sub(r'(?:[{chars}]+$)'.format(chars=re.escape(chars)), '', string)

def regstrip(string, chars=' \n\r\t\f\v'):
    return rregstrip(lregstrip(string,chars),chars)

candidate = "  \t hogo  hohohoh oho hohoho h         \n \f"
print("-"+regstrip(candidate)+"-")