Written By mathew

【Udemy】Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)メモ③

ALL DataScience Study

Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)を学んでのメモ③

https://www.udemy.com/course-dashboard-redirect/?course_id=2948214
備忘録でメモしていきます。

【Udemy】Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)メモ②

正規表現

◆正規表現とは
https?://[^/]+/
※https?とすることにより、httpsかhttpのどちらも検索対象とできる。
※[^/]+/とすることにより、/が現れる直前までの数字・文字列を示す。

◆matchオブジェクトのメソッド
group()/マッチして文字列を取得する
span()/マッチした文字列の開始、終了位置を取得する
start()/マッチした文字列の開始位置を取得する
end()/マッチした文字列の終了位置を取得する

◆正規表現の関数
match/先頭の文字列からパターンに一致するものを検索する
search/先頭に限らずパターンに一致する物があるかを確認する。※ただし、複数一致しても1つ目だけを返す。
findall/パターンに一致するものを全てリストで返す。※位置情報(開始、終了)は取得不可。
finditer/パターンに一致するものを全てmatchオブジェクトで取得することができる。※位置情報(開始、終了)も取得可。
fullmatch/文字列全体が一致しているかを確認する。
sub/パターンに一致した文字列を別の文字列に置き換える

◆match関数
先頭の文字列からパターンに一致するものを検索
re.match(正規表現のパターン,検索対象の文字列)
戻り値
・matchオブジェクトを返す
・何も取得できない場合、Noneを返す

◆search関数
先頭に限らずパターンに一致するものを検索
※ただし、複数一致しても1つ目だけを返す
re.search(正規表現のパターン,検索対象の文字列)
戻り値
・matchオブジェクトを返す
・何も取得できない場合、Noneを返す

◆findall関数
パターンに一致するものを全てリストで返す
※位置情報(開始、終了)は取得不可
re.findall(正規表現のパターン,検索対象の文字列)
戻り値
・リストを返す
・何も取得できない場合、空のリストを返す

◆finditer関数
パターンに一致するものを全てmatchオブジェクトで取得する
※位置情報(開始、終了)も取得可
re.finditer(正規表現,検索対象の文字列)
戻り値
・イテレータを返す(要素はmatchオブジェクト)
・何も取得できない場合、空のイテレータを返す

◆fullmatch関数
文字列全体が一致しているかを確認する
re.fullmatch(正規表現のパターン,検索対象の文字列)
戻り値
・matchオブジェクトを返す
・何も取得できない場合、Noneを返す

◆sub関数
パターンに一致した文字列を別の文字列に置き換える
re.sub(正規表現のパターン,置き換え後の文字列,検索対象の文字列)
戻り値
・置き換え処理をした後の文字列を返す
・一致しない場合、置換えせずに文字列を返す

◆文字列の先頭・末尾を指定する方法
^/文字列の先頭からパターンに一致するかを判定
$/文字列の末尾からパターンに一致するかを判定

◆繰り返す回数を指定する記号
?/0回もしくは1回
*/0回以上
+/1回以上
{m}/m回
{m,}/m回以上
{m,n}/m回以上、n回まで
()/()で囲われた文字列をグルーピングし、パターンに一致するかを判定

◆集合(否定を含む)を指定する記号
[0-9]/全ての数字
[a-zA-Z]/全てのアルファベット
[a-zA-Z0-9]/全てのアルファベットと数字
[^a-zA-Z0-9]/全てのアルファベットと数字以外
※集合に^(ハット)を付けると、集合の条件の否定となる

◆ORを指定する記号
|/例:a|b:a or b(aかbのいずれか)
[ ]/例:[ab]:a or b(aかbのいずれか)

◆特殊シーケンス
\d/全ての数字[0-9]と同じ
\D/全ての数字以外[^0-9]と同じ
\w/全ての英数字と_ [a-zA-Z0-9]と同じ
\W/全ての英数字と_以外 [^a-zA-Z0-9]と同じ
\s/空白
\S/空白以外
\A/文字列の先頭 ^と同じ
\Z/文字列の末尾 $と同じ

◆パターンのコンパイル
コンパイルにより同じパターンを繰り返し利用できる
pattern = re.compile(正規表現のパターン)
m = pattern.match(検索対象の文字列)

◆特殊文字のエスケープ
*や?のような特殊な文字を検索する場合、円マーク・バックスラッシュを付ける必要がある
例)?の検索
m = re.match(“\?”,”xy?”)

◆貪欲マッチ・非貪欲マッチ
繰り返し回数を指定する記号の検索範囲
?(0回もしくは1回)、(0回以上)、+(1回以上)
re.search(“<.*>“,”