Introduction à la façon dont Python utilise les expressions régulières pour filtrer ou remplacer les balises HTML

巴扎黑
Libérer: 2017-09-26 10:36:02
original
2679 Les gens l'ont consulté

Cet article présente principalement la méthode Python d'utilisation des expressions régulières pour filtrer ou remplacer les balises HTML. Il présente brièvement la syntaxe liée aux expressions régulières de Python et analyse les techniques de fonctionnement liées au filtrage et au remplacement des balises HTML basées sur les expressions régulières de Python avec des exemples spécifiques. dans le besoin peuvent se référer à

Cet article décrit comment Python utilise les expressions régulières pour filtrer ou remplacer les balises HTML. Partagez-le avec tout le monde pour votre référence, comme suit :

Contenu clé de l'expression régulière python :

python régulier expression Caractère d'échappement de formule :

Correspond à n'importe quel caractère à l'exception des caractères de nouvelle ligne
w correspond à des lettres, des chiffres, des traits de soulignement ou des caractères chinois
s correspond à n'importe quel caractère d'espacement
d correspond. nombres
b correspond au début ou à la fin d'un mot
^ correspond au début d'une chaîne
$ correspond à la fin d'une chaîne
W correspond à tout caractère qui n'est pas des lettres, des chiffres, des traits de soulignement ou Caractères chinois
S correspond à tout caractère qui n'est pas un caractère d'espacement
D correspond à tout caractère autre qu'un chiffre
B correspond à une position qui n'est ni le début ni la fin d'un mot
[^x] correspond n'importe quel caractère sauf x
[^aeiou ] Correspond à tous les caractères sauf les lettres aeiou

Codes de qualification d'expression régulière Python/instructions de grammaire couramment utilisés :

* Répéter zéro ou plusieurs fois
+ Répéter une ou plusieurs fois
 ? Répéter zéro ou une fois
{n} Répéter n fois
{n,} Répéter n ou plusieurs fois
{n,m} répété n à m fois
À propos de l'expression régulière python nommée groupe :
Groupe nommé : (?P....)
Cet article est également mentionné en ce qui concerne la définition (au début du point d'interrogation, il y a un signe '<' s'il est en avant, et un signe '!' s'il ne l'est pas) :
Délimitation avant (?<=...)
Délimitation vers l'arrière (?=... )
Avant non défini (?Arrière non défini (?!....)

Expression régulière Python Exemple de code pour supprimer (filtrer) les balises HTML


#-*- coding:utf-8 -*-
import re
##过滤HTML中的标签
# 将HTML中标签等信息去掉
# @param htmlstr HTML字符串.
def filter_tags(htmlstr):
  # 先过滤CDATA
  re_cdata = re.compile("//<!
CDATA\[[>]∗//
\]>", re.I) #匹配CDATA
  re_script = re.compile(&#39;<\s*script[^>]*>[^<]*<\s*/\s*script\s*>&#39;, re.I) # Script
  re_style = re.compile(&#39;<\s*style[^>]*>[^<]*<\s*/\s*style\s*>&#39;, re.I) # style
  re_br = re.compile(&#39;<br\s*?/?>&#39;) # 处理换行
  re_h = re.compile(&#39;</?\w+[^>]*>&#39;) # HTML标签
  re_comment = re.compile(&#39;<!--[^>]*-->&#39;) # HTML注释
  s = re_cdata.sub(&#39;&#39;, htmlstr) # 去掉CDATA
  s = re_script.sub(&#39;&#39;, s) # 去掉SCRIPT
  s = re_style.sub(&#39;&#39;, s) # 去掉style
  s = re_br.sub(&#39;\n&#39;, s) # 将br转换为换行
  s = re_h.sub(&#39;&#39;, s) # 去掉HTML 标签
  s = re_comment.sub(&#39;&#39;, s) # 去掉HTML注释
  # 去掉多余的空行
  blank_line = re.compile(&#39;\n+&#39;)
  s = blank_line.sub(&#39;\n&#39;, s)
  s = replaceCharEntity(s) # 替换实体
  return s
##替换常用HTML字符实体.
# 使用正常的字符替换HTML中特殊的字符实体.
# 你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
# @param htmlstr HTML字符串.
def replaceCharEntity(htmlstr):
  CHAR_ENTITIES = {&#39;nbsp&#39;: &#39; &#39;, &#39;160&#39;: &#39; &#39;,
           &#39;lt&#39;: &#39;<&#39;, &#39;60&#39;: &#39;<&#39;,
           &#39;gt&#39;: &#39;>&#39;, &#39;62&#39;: &#39;>&#39;,
           &#39;amp&#39;: &#39;&&#39;, &#39;38&#39;: &#39;&&#39;,
           &#39;quot&#39;: &#39;"&#39;&#39;"&#39;, &#39;34&#39;: &#39;"&#39;, }
  re_charEntity = re.compile(r&#39;?(?P<name>\w+);&#39;)
  sz = re_charEntity.search(htmlstr)
  while sz:
    entity = sz.group() # entity全称,如>
    key = sz.group(&#39;name&#39;) # 去除&;后entity,如>为gt
    try:
      htmlstr = re_charEntity.sub(CHAR_ENTITIES[key], htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
    except KeyError:
      # 以空串代替
      htmlstr = re_charEntity.sub(&#39;&#39;, htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
  return htmlstr
def repalce(s, re_exp, repl_string):
  return re_exp.sub(repl_string, s)
if __name__ == &#39;__main__&#39;:
  s = file(&#39;test.html&#39;).read()
  news = filter_tags(s)
  print news
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal