簡體   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