我有以下代码检查电子邮件正文中是否存在公式化内容,但我不理解此字符串'<\s?\/?\s?form\s?>'
的含义,以及是否存在另一种方法来检查电子邮件中是否存在公式化内容?
这是我写的代码:
class HTMLFormFinder(FeatureFinder):
def getFeature(self, message):
import re
super(HTMLFormFinder, self).getFeature(message)
payload = utils.getpayload(message).lower()
return re.compile(r'<\s?\/?\s?form\s?>', re.IGNORECASE).search(payload)!= None
谢谢。
答案 0 :(得分:1)
这就是所谓的正则表达式。这是匹配遵循特定模式的字符串的一种方法。
https://docs.python.org/3.7/library/re.html
这里r'<\s?\/?\s?form\s?>'
描述了一个<form>
HTML标记,在html格式错误/格式错误的情况下,该标记具有多个后备,特别是它处理可能在标记名称form
旁边出现的空白。
检查表单是否存在的更好方法是使用XML / HTML解析器,例如ElementTree,BeautifulSoup,因为它们处理不良/不正确的HTML的能力比正则表达式要好得多。但是,如果您想保持简单,则使用的正则表达式就足够了。
使用BeautifulSoup,您可以执行以下操作:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
has_form = len(soup.find('form')) > 0
答案 1 :(得分:0)
您可以在此处阅读有关正则表达式的更多信息: https://docs.python.org/2/library/re.html
特别是\s
与任何空白字符匹配。