正規表現の基礎(1)

ディレクトリ

まず、基本的な文字の一致

第二に、一般的なメタ文字と機能

第三に、リピートマッチ

  1.正確に定義または間隔の数を制限します

  2.過度の試合を防止するために

第四に、一般的な問題を解決するための正規表現

まず、基本的な文字の一致

  1.空白のメタ文字                 

メタキャラクタ 説明
[\ B] Backspaceキー
\ F 改ページ
\ nは 復帰
\ rを 改行
\トン Tabキー
\ V 垂直タブ

 

 

 

 

 

 

 

 

 

Bを\する2つの文字を表す場合、単語の境界と一致し、一致した単語の前に満たされなければならなかった、我々は説明する」\ bのRにする必要があります。

キャリッジ・リターンおよび改行感覚機能は、情報の一部は、いくつかの通訳を示すであろう見て、同じである\ rが自動的N \に変換し、正規表現\ rをする\ n「はキャリッジリターンラインフィード」組み合わせ、Windowsシステム、この組み合わせに一致しますテキスト、UnixおよびLinuxは、\ rを追加することはできませんマッチング時間\ n個の\ nをして、テキストを1行だけの改行文字を使用したとして終了タグ。

   2.特定の文字が一致

メタキャラクタ 説明
\ dは ([0-9]に相当)の任意の数字
\ D ([^ 0-9]に相当)の任意の数字以外の文字
\ワット いずれか1つの英字または下線文字(すなわち、[-ZA-Z0-9_])
\ W 任意の非英字または下線文字(すなわち、[^-ZA-Z0-9_])
\ sの 任意の空白文字
\ S 任意の非空白文字

 

 

 

 

 

 

 

 

 

大文字と小文字は反対の文字に一致します。

  3. 16進数と8進数に一致

正規表現では、16進数の値は、\ X0AはASCII文字10(ラインフィード)に対応するように、プレフィックスの\ Xを使用するように、効果は、N- \に等しい、オクタルプレフィックスがASCIIに対応\ 0として\ 011であり、図9(タブフー)

第二に、一般的なメタ文字と機能

  必要性はテキスト自体\と\\を一致させる際に、上記のような一般的にエスケープ文字に使用される1 \文字が一致します

  2.文字は任意の単一文字、文字、数字、さらには自分自身にマッチします

  3. +文字は1文字以上、前の文字に一致するように、同じ感覚で文字または文字セットと一致した後、

  4. *文字は、「+」の使用と同様、ゼロ以上の文字にマッチするだけで、文字の試合の前に発生しないことがあります

  ?文字は、このようなURLは、httpとhttpsのが、正規表現のhttpsを合わせるときのように、彼の前に文字が存在して一致しましたか?

  6. @ - エスケープ文字を使用する必要はありません

第三に、リピートマッチ

  1.正確に定義または間隔の数を制限します

  文字の関数の上記の説明では、我々は、マッチング+または*を繰り返すことができるが、限界があり、繰り返しの数を制限することができないので、それは正確な数を設定し得、次いで、{}、例えば、ページを識別するために使用テキストのRGB値は次のとおりです。

< ボディBGCOLOR = "#336655" テキスト= "#FFFFFF" >
コードの表示、

正規表現:#[0-9A-FA-F] {6}の結果:#336655 #FFFFFF

、2005/01 / 01,2006-1-10,19.08.15,18 88、最後の1は、少なくとも二桁の年、要件を満たしていない:など、あなたが書かれた形式の日付を確認したい場合は、その一例と一致し6回繰り返します繰り返しの最小および最大数を設定する必要があります、

正規表現:\ dの{2,4} - \ dは{1,2} - \ dは{1,2}最終結果が一致しないように満たしていない、[\ / \] [\ / \。]チェックが完了しています。

  2.過度の試合を防止するために

  我々は繰り返しの限られた数と一致することができましたが、状況があり、様々なラベルの内部Webページには、内部のコンテンツ<A> </a>を見つけるために、例えば、複数回表示されますが:テキスト:

<a>网页</a><a>新闻</a><a>贴吧</a><a>知道</a><a>音乐</a><a>图片</a><a>视频</a><a>地图</a><a>文库</a>
View Code

正则表达式:<a>.*</a>  匹配结果是整一串,<a>网页</a><a>新闻</a><a>贴吧</a><a>知道</a><a>音乐</a><a>图片</a><a>视频</a><a>地图</a><a>文库</a>,而我们理想是每个标签都会分开

修改为:<a>.*?</a>   结果显示9个匹配:<a>网页</a>、<a>新闻</a>、<a>贴吧</a>、<a>知道</a>、<a>音乐</a>、<a>图片</a>、<a>视频</a>、<a>地图</a>、<a>文库</a>

  +、*都是“贪婪型”元字符,在匹配行为模式上是多多益善而不是适可而止,所以它的“懒惰性”版本则尽可能短的匹配,式子后加上?

四、常见问题的正则表达式解决方法

  1.URL地址

<a href="https://www.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://www.baidu.com/s?ie=utf-8&fr=bks0000&wd=">网页</a>
<a href="http://news.baidu.com/" nslog="normal" nslog-type="10600112" data-href="http://news.baidu.com/ns?tn=news&cl=2&rn=20&ct=1&fr=bks0000&ie=utf-8&word=">新闻</a>
<a href="https://tieba.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://tieba.baidu.com/f?ie=utf-8&fr=bks0000&kw=">贴吧</a>
<a href="https://zhidao.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://zhidao.baidu.com/search?pn=0&&rn=10&lm=0&fr=bks0000&word=">知道</a>
<a href="http://music.baidu.com/" nslog="normal" nslog-type="10600112" data-href="http://music.baidu.com/search?f=ms&ct=134217728&ie=utf-8&rn=&lm=-1&pn=30&fr=bks0000&key=">音乐</a>
<a href="http://image.baidu.com/" nslog="normal" nslog-type="10600112" data-href="http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=">图片</a>
<a href="http://v.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://www.baidu.com/sf/vsearch?pd=video&tn=vsearch&ie=utf-8&rsv_spt=17&wd=">视频</a>
<a href="http://map.baidu.com/" nslog="normal" nslog-type="10600112" data-href="http://map.baidu.com/m?ie=utf-8&fr=bks0000&word=">地图</a>
<a href="https://wenku.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://wenku.baidu.com/search?lm=0&od=0&ie=utf-8&fr=bks0000&word=">文库</a>
View Code

正则表达式:https?://[\w.]+.com

  2.电子邮件地址

My QQ mail is [email protected], and another mail is [email protected]
View Code

正则表达式:(\w+)*@\w+\.com

   在实际运用正则表达式中,很多需要根据文本特点写出最合适简单的式子,比如爬取网页的目标信息,一个好的正则表达式能帮我们简单地解决问题。

おすすめ

転載: www.cnblogs.com/chenzhenhong/p/11356940.html