diadia

興味があることをやってみる。独学で勉強しています。初心者から始めたので困ったことを書いて同じ境遇の方のヒントになればと思います。

reモジュールについて

基本知識

urllib.request.urlopenが返すオブジェクトはbyte型である。reモジュールはbyteではなくstr型でなければならない。read( )をつかうことでbyteからstrに変換することができる。


reモジュールの使い方イメージ


  1. まずはターゲットにしたいパターンを定める。
  2. それをre.compile( )を使って正規表現オブジェクトに変換する。
  3. 正規表現オブジェクトに対するメソッドを使う。
  4. 一部のメソッドはマッチオブジェクトと呼ばれるオブジェクトが返ってくるので、それに対しては更にメソッドを使ってマッチオブジェクトの持つ情報を取り出す。
4に関してはマッチオブジェクトが返される場合のみ使うので3で処理が完結することもある。例として3で完結するものを記述しておく。


#文字列"123gejsorSAHkw"のうちAを文字列から排除したい
import re
moji = "123gejsorSAHkw"
PATTERN = "A" #1.パターンを定める
regex = re.compile(PATTERN) #2.正規表現オブジェクトに変換
new_moji = regex.sub("",moji) #3.上記オブジェクトに対するメソッド使用
print(new_moji)

123gejsorSHkw

パターンを正規表現に変換するメソッド

  • re.compile( )


正規表現オブジェクトに対するメソッド

  • findall( )
  • split( )
  • sub( )
  • finditer( )
  • search( )...マッチオブジェクトを返す
  • match( )...マッチオブジェクトを返す

マッチオブジェクトに対するメソッド

  • group( )...マッチした文字列を返す
  • groups( )...グループをすべて返す
  • start( )
  • end( )

JPEG正規表現の取得


r'"(https?://[a-zA-Z0-9:/.=_\-]*jpg|jpeg|JPG|JPEG)"'
下が参考になった。
取得したHTMLからJPEGファイルのリンク先を取得

複数の要素をパターンに定めたいとき

今までPATTERN = "hoge"とやっていたけど、その他の文字列も扱いと思うときには|を使うと良い。
PATTERN = "hoge|foo"
こうすれば良い。