正規表現:爬虫類で5を準備

     ※私たちが想像するようPythonの爬虫類とダウンロードページが非常に簡単にドロップすることですが、あなたは、Webページに必要なものを見つけるために、それを見つけるのは困難であり、文字列で見つけることができます見つけることは簡単なようではありません、直接findメソッドを使用していません拾うことができます一致する文字列の位置を見つける
     たとえば、あなたは自動的に最新のプロキシIPアドレスを取得するスクリプトを書きたいの※、確かに出会いの難しされます
ここに画像を挿入説明
     (分析:爬虫類を書くには、確かに国会議事堂の検討要素にサイトにアクセスする必要があります、ランダムなIPを選択すると、要素を点検した後、前にIPものを見ると、このラベルの後、TDタグに包まれて見つけることができ、その後、あなたは別の場所でのTDタグを持っていますが、内部では、IPされていませんが、他の情報あなたは多くの時間を費やすことが、表ラベルに最初に行く、そして最後のtbody trのtdのタグにして、成功したIPアドレスのユニークな特徴を配置されるが、この書き込みは唯一面倒ではありませんが、ユニバーサル持っていない大きな問題があります実現可能なこのサイトにあなたのことを、別のサイトでは現実的ではありません、そして
     それが最善である自分たちのニーズに従うことができます コンテンツ機能は自動的に私がIPアドレスを探していることを、見つけるために、IPアドレスは、この機能は、英語の3つのピリオドで区切られている範囲は0〜255、の4つのセクション、各桁を持つことであることをどのさて、あなたは、この機能に応じて、IPアドレスの内部機能を見つけるために、ウェブ上で行くことができますが、その文字列のメソッドが付属していますが行うことはできませんが、その後、我々は問題が発生し、コンピュータの古いタイマーも長い間考えられてきましたアップ、そして非常に優れたソリューションを設計するために私たちを助けている正規表現を使用することです)

     ※習得が困難な正規表現は、しかし、文字列は、文字列に沿っていくつかの複雑なルールを見つける必要がある場合が多いときには、処理プログラムやウェブページの作成に非常に便利です、例えば、機能やルールだけならば、IPアドレスを言いましたPythobが来る文字列メソッドを使用し、あなたは正規表現を知っていれば、この時間は、あなたがこれは本当に万能薬あああることがわかります、怒っているだろう。正規表現自体がこれらのルールを記述するために使用される正規表現のためにこれらの複雑なルールを記述するためのツールであるため、異なるプログラミング言語はまた、正規表現を使用する必要がありますが、同じではない、Pythonは言葉の使用であります達成するためのモジュールを再

     ※)(検索:文字列の正規表現パターンで位置の検索が最初に現れるが
ここに画像を挿入説明
     (最初の引数はあなたがルールを検索する必要があり、あること、正規表現パターンである生の文字列rを使用する必要があり、ここで説明しました不必要な多くの問題を回避するために書き込み、上記マッチングは、(7-12)で見つけることができない、Noneを返します)
ここに画像を挿入説明
     (Findメソッドを行うこともできますが、ショーは開始アドレスです)
     ※ワイルドカード。、缶あなたは、改行以外の任意の文字を一致させることができます。
     (ワイルドカード*とは?このカテゴリで任意の記号文字を表すことができ、正規表現は、(ドットを使用して、いわゆるワイルドカードです。))

ここに画像を挿入説明
     (最初のステートメントとして、彼は(このために、最初の文字のIを見つけました。)改行以外の任意の文字を表し、Iは、第二の文にマッチした(、Cを追加しませんでした。)また、 )を一致させることができます
ここに画像を挿入説明
     (その時点(で、\バックスラッシュで同時に。)もはや、正規表現は、バックスラッシュ文字はまだ元を奪う能力を持っている手段は、自分自身に代わって、他の文字を表していませんメタ文字自体は()文字は、ドットなどの特別な機能を持って、他の意味を表す)。
ここに画像を挿入説明
     分析:バックスラッシュ文字もすることができます、例えば、デジタルに一致させたい、普通の特殊能力を作るために使用することができます)任意の数と一致するように、バックスラッシュDを使用して

     ※IPアドレスと一致しようとします
ここに画像を挿入説明
     (分析:IPアドレスの合意された範囲は、\今ここにD 0-255で、一方、あなたは成功した試合を見ることができるが、しかし、書き込みがそれほど問題がある、最初の\数字に一致しdは、0-9です\ D \ dは数字の唯一の特定のセットの最大のマッチング数は999で、範囲は最大範囲が255である、そして、あなたは、各グループのアドレス、IP、ここで必要とされている第二には、3桁の数字を持っている必要がありますが、実際には、いくつかのIPアドレスまたは2、それほど一致していません)

     ※为了表示一个字符串的范围,我们可以创建一个叫做 字符类 的东西,使用中括号[] 来创建一个字符类,字符类的含义就是你只要匹配字符类中的一个字符,那么就算匹配
ここに画像を挿入説明
     (可以看到正则表达式 是默认开启 大小字母敏感 模式的)

     ※可以在字符类中使用 横杆 ‘-’ 表示一个范围
ここに画像を挿入説明

     ※使用大括号来解决限定重复匹配的次数
ここに画像を挿入説明
     (解析:大括号里边的3表示的重复的次数,表示的前面的那个字符也就是b重复的次数,然后a和c没有那都是一次,所以匹配出了一个a三个b一个
c,第二句就匹配不到了因为b的重复次数超过了3)

     ※大括号里还可以给出重复匹配次数的范围
ここに画像を挿入説明
     (解析:{3,10}表示的就是只要它前面那个字符b出现了3-8次都是可以匹配到的,然后a和c也只是一次)

     ※使用正则表达式来匹配 0~255
ここに画像を挿入説明
     (解析:这两种方式都是错误的,匹配不到,因为正则表达式匹配的是字符串,所以呢数字对于字符来说只有0-9,例如123就是有‘1’、‘2’、‘3三个字符来组成的,那么上面的[0-255]这个字符类表示的就是0-2然后还有两个5,所以他就会匹配0125四个数字中的任何一个,所以得了个1)
ここに画像を挿入説明
     (解析:[01]\d\d|2[0-4\d|25[0-5]]首先这个东东要分三个部分来看,第一部分是[01]\d\d,也就是可以匹配到百位上是0开头或者1开头,然后十位上是\d也就是0-9中的任意数字,个位也一样,所以这一部分表示数的范围就是000-199,接着第二部分和第一部分用逻辑或|接上,第二部分同理,百位上数字只能是2,十位上可以是0-4,个位随意,随意第二步可以匹配到的范围是200-249,第三部分也同理啦,也用逻辑或|连接,第三步就固定了百位和十位,百位只能是2,十位只能是5,个位可以是0-5,所以第三部分的范围是250-255,综合这三部分可以匹配到的范围就是0-255了,, 但是这样写还是有问题,只能要求匹配的数字必须是 3 位的,如下:)
ここに画像を挿入説明
     (解析:可以看到88匹配不出,只有写088才可以匹配出来,因为每一位上是默认至少重复一次,所以把百位和十位改为可以重复0-1次就可以了,如下:
ここに画像を挿入説明

     ※最后可以来配 完整的IP地址

>>> re.search(r"(([01]{0,1}\d{0,1}\d|2[0-4\d|25[0-5]])\.){3}([01]{0,1}\d{0,1}\d|2[0-4\d|25[0-5]])","192.188.68.3")
<re.Match object; span=(0, 12), match='192.188.68.3'>

ここに画像を挿入説明
     (解析:ip地址是有四个部分,如192.188.68.3,每一部分的范围是0-255,所以理论上要写4份一样的,然后他们之间用(.)隔开,然后每一部分用小括号括起来,但是可以看到前三个是一个,如192. 第二个188.,第三个68.所以直接写{3},重复三次就好,然后第四部分在写一遍,就得到上面的一堆长长的表达式了

公開された247元の記事 ウォンの賞賛116 ビュー280 000 +

おすすめ

転載: blog.csdn.net/w15977858408/article/details/104121258