0

次の正規表現の作成方法:

<meta [^\>]*content\s*=\s*(["\'])(.*?)\1

名前タグが動的である場合は?

名前タグは次のとおりです。

<meta *name="Generator"* ...

解決:

re.compile(r""" <meta name=\"{0}\" [^\>]*content\s*=\s*(["\'])(.*?)\1""".format(meclue), re.I)
4

2 に答える 2

2

HTML を正規表現で解析しようとしないでください。それは悪い考えです。代わりに、HTML パーサーを使用してください。lxml には素晴らしいものがあります:

import lxml.html

html_string = """<html>
<head>
  <meta name="firstname" />
  <meta name="secondname" />
  <meta someotherattribute="nonsense" />
</head>
<body>
  <p>Something in the body</p>
</body>
</html>"""

html_element = lxml.html.fromstring(html_string)
# get all the name attributes from all meta elements
meta_name_list = html_element.xpath("//meta/@name")
# print them out
for name in meta_name_list:
    print name

出力:

firstname
secondname
于 2012-07-25T20:44:25.133 に答える
0

正規表現をメタタグとname属性に一致させる場合は、次のようにする必要があります。

<meta name="[^"]*" />

私はあなたの正規表現からあなたがこれを正確にやりたくないのではないかと思います。これが必要なものでない場合は、正規表現を一致させたい文字列の例をいくつか指定してください

于 2012-07-25T07:18:59.780 に答える