关于的问题回复sub()在python中

2024-03-29 13:03:08 发布

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

我想将这样的字符串"css/login.css"替换为"***css/login.css***",整个字符串如下:

str1 = '<meta name="viewport" content="width=device-width,
initial-scale=1.0,maximum-scale=1.0,user-scalable=0">\
<link rel = "stylesheet" type = "text/css" href = "css/login.css"/>\
<script type="text/javascript" src="js/jquery.js"></script>\
<script type="text/javascript" src="js/login.js"></script>\
<script type="text/javascript" src="js/authLogin.js"></script>\
</head>'

这是我的密码:

pattern1 = r'.*?href.*?=.*?(".+?\.css").*?' re.sub(pattern1,r"***\1***",str1)

输出为:

'***"css/login.css"***/>\t<script type="text/javascript"src="js/jquery.js">
</script>\t<script type="text/javascript" src="js/login.js">
</script>\t<script type="text/javascript" src="js/authLogin.js">
</script></head>'

为什么它不输出"css/login.css"/>之前的字符串,即'<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">\<link rel = "stylesheet" type = "text/css" href =?你知道吗

希望有人能帮忙,谢谢!你知道吗


Tags: 字符串textnamesrctypejsscriptlogin
2条回答

manual函数中回复sub具体描述如下:

Return the string obtained by replacing the leftmost non-overlapping occurrences of
pattern in string by the replacement repl.

在正则表达式中,第一个.*与字符串中href之前的所有内容匹配。那么字符串中"css/login.css"之前的所有内容都是您用正则表达式指定的模式的一部分。 然后将其替换为***"css/login.css"**。你知道吗

如果要在输出中复制第一个捕获组之前的部分,则还需要为此创建一个捕获组。类似地,对于后面的部分,您可以创建一个捕获组(但是删除lazy?

pattern1 = r'(.*?href.*?=.*?)(".+?\.css")(.*)'
re.sub(pattern1, r"\1***\2***\3", str1)

如果输入字符串中有换行符,则还应使用re.DOTALL标志,以便这些换行符与.*匹配:

pattern1 = r'(.*?href.*?=.*?)(".+?\.css")(.*)'
re.sub(pattern1, r"\1***\2***\3", str1, 0, re.DOTALL)

相关问题 更多 >