当我学习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) + ']
(方括号中的字符' + + '
代表什么?)的含义是什么?
答案 0 :(得分:1)
让我们分解一下,例如:
prefix = '(['
suffix = ']*)'
expr = prefix + str(param) + suffix
mo = re.compile('^' + expr + '(.*)' + expr + '$')
因此,如您所见,方括号之间不是+ +
,只有两个字符串文字恰好以[
结尾并以]
开头。
另外,一个小技巧:将任意字符串注入正则表达式也不是很安全,因此您可能要使用re.escape(str(param))
。
答案 1 :(得分:0)
这意味着将传递给函数的“ param”值转换为文字字符串数据类型,并将其用作要求值的正则表达式的一部分。加号(+)将字符串连接在一起。