我正在尝试编写一个脚本,该脚本将搜索html文件,然后替换表单操作。所以在这个基本代码中:
<html>
<head>
<title>Forms</title>
</head>
<body>
<form action="login.php" method="post">
Username: <input type="text" name="username" value="" />
<br />
Password: <input type="password" name="password" value="" />
<br />
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
我希望脚本能够搜索form action =“login.php”但是只能用newlogin.php替换login.php。关键是表单操作可能会在不同文件之间发生变化,即在另一个html文件中,login.php可能会完全不同,因此正则表达式必须搜索表单action =并替换后面的文本(也许使用“限制器?”
我对正则表达式的了解非常基础,例如我知道如何替换login.php:
(re.sub('login.php', 'newlogin.php', line))
但很明显,如果login.php从一个文件更改为另一个文件,则无法使用上述内容。
非常感谢任何帮助!
全部感谢=)
答案 0 :(得分:2)
您可以使用正则表达式,也可以只使用简单的字符串操作。只是一个测试案例。
for line in open("file"):
if "form action" in line:
line=line.rstrip()
a=line.split('<form action="')
a[-1] = '"newlogin" ' + a[-1].split()[-1]
line = '<form action='.join(a)
print line
答案 1 :(得分:1)
重新捕捉2组,表格以及行动后第1段引用的所有内容以及动作内容。
使用第一组进行替换,然后使用新操作:
re.sub(r'(<form.*?action=")([^"]+)', r'\1newlogin.php', content)
答案 2 :(得分:0)
你无法尝试这种技术:
(<form[^>]*action=")[^"]*
伪码:
regex.replace(input, pattern, concat(\1, new_value))
您可以使用此正则表达式:
(?<=<form[^>]*action=")[^"]*