如何基于用户输入创建正则表达式(Python)

时间:2018-09-11 16:09:47

标签: python regex input

我对Python相当陌生,我现在正在学习Regexes,这对我来说是一个挑战。现在我的问题是我正在处理一个问题,即创建一个功能,该功能是strip()字符串方法的正则表达式版本。

我的问题是,如果不使用if语句列出程序中的所有可能性,就无法弄清楚如何将用户输入的字符转换为正则表达式。例如:

def regexStrip(string, char):
    if char = 'a' or 'b' or 'c' etc...
        charRegex = re.compile(r'^[a-z]+')

这不是我的完整程序,只是几行来演示我在说什么。我想知道是否有人可以帮助我找到将用户输入转换为正则表达式的更有效方法。

1 个答案:

答案 0 :(得分:0)

您可以在字符串中使用花括号和format函数来构建正则表达式。

def regexStrip(string, char=' '):
    #Removes the characters at the beginning of the string
    striped_left = re.sub('^{}*'.format(char), '', string)
    #Removes the characters at the end of the string
    striped = re.sub('{}*$'.format(char), '', striped_left)
    return striped

python中的strip方法允许使用多个字符,例如,您可以执行'hello world'.strip('held')并返回'o wor'

要执行此操作,您可以执行以下操作:

def regexStrip(string, chars=' '):
    rgx_chars = '|'.join(chars)
    #Removes the characters at the beginning of the string
    striped_left = re.sub('^[{}]*'.format(rgx_chars), '', string)
    #Removes the characters at the end of the string
    striped = re.sub('[{}]*$'.format(rgx_chars), '', striped_left)
    return striped

如果要使用搜索匹配而不是替换,可以执行以下操作:

def regexStrip(string, chars=' '):
    rgx_chars = '|'.join(chars)
    striped_search = re.search('[^{0}].*[^{0}]'.format(rgx_chars), string)
    if striped_search :
        return striped_search.group()
    else:
        return ''