正则表达式中[‘+ str(param)+’]的含义是什么

时间:2018-08-27 14:11:23

标签: python regex

当我学习python中的正则表达式时,遇到了以下代码。 这是strip()的正则表达式版本。

import re

def REstrip(text, param=' '):
    mo = re.compile(r'^([' + str(param) + ']*)(.*?)([' + str(param) + ']*)$')
    result = mo.search(text)
    if (result != None):
        print(result.group(2))


text = input("Please input the text: ")
param = input("Please input the param: ")
REstrip(text, param)

输出:

Please input the text: 11221
Please input the param: 11
22

[' + str(param) + '](方括号中的字符' + + '代表什么?)的含义是什么?

2 个答案:

答案 0 :(得分:1)

让我们分解一下,例如:

prefix = '(['
suffix = ']*)'

expr = prefix + str(param) + suffix

mo = re.compile('^' + expr + '(.*)' + expr + '$')

因此,如您所见,方括号之间不是+ +,只有两个字符串文字恰好以[结尾并以]开头。

另外,一个小技巧:将任意字符串注入正则表达式也不是很安全,因此您可能要使用re.escape(str(param))

答案 1 :(得分:0)

这意味着将传递给函数的“ param”值转换为文字字符串数据类型,并将其用作要求值的正则表达式的一部分。加号(+)将字符串连接在一起。