繁体   English   中英

如何在python中使用正则表达式搜索单词然后替换文本?

[英]How to search for a word and then replace text after it using regular expressions in python?

我正在尝试编写一个脚本,它将搜索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从一个文件更改为另一个文件,则如上所述没有用处。

任何帮助深表感谢!

谢谢所有=)

您可以使用正则表达式,或只是简单的字符串操作。 只是一个测试案例。

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

重新捕获2组,表格和行动后第一个引用的所有内容,以及动作内容。

使用第一组进行替换,然后使用新操作:

re.sub(r'(<form.*?action=")([^"]+)', r'\1newlogin.php',  content)

你不能尝试这种技术:

(<form[^>]*action=")[^"]*

伪代码:

regex.replace(input, pattern, concat(\1, new_value))

你可以使用这个正则表达式:

(?<=<form[^>]*action=")[^"]*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM