正規表現を追加しました:
^(キャレット):...表示を開始する(試合で使用されていないことと同じ操作である。もし、括弧内に、代表が否定操作されています)
$:XX ...年末で終了する必要がありますすることを示し
|:マッチ複数の式または文字
貪欲と非欲張りモード
貪欲:正規表現は、できるだけ多くの文字にマッチします(デフォルト貪欲モード)
非貪欲モード:正規表現に一致する文字はできるだけ少ないのでしょうか?
#のテキスト= "タイトル<の/ H1> <H1の>" #RET = re.match( '<。?+>'、テキスト) #の印刷(ret.group()) #の出力:<H1>
#1 0〜100のマッチフィギュア #のテキスト= "1001" #| RET = re.match(、テキスト'?100 $ [1-9] [0-9] $') #の印刷(ret.group())
モジュールに使用される関数を再
グループのグループ化
#のテキストは= "リンゴの価格は、オレンジの価格は$ 10、$ 99、" #RET = re.search( '*(\ $の\ dが+)。*(\ $ \ d +)'を、テキスト) #1 )印刷(ret.group( )#等价于プリント(ret.group(0)) #プリント(ret.group(1)) #プリント(ret.group(2)) #プリント(ret.groups())#等价于プリント(RET .group(1,2))
findAll
リストを返し、すべての条件を満たして下さい
サブ
他の文字列にマッチした文字列
re.sub(パターン、REPL、文字列、カウント= 0、フラグ= 0)
スプリット
サブストリングマッチング結果をよると、分割後の文字列のリストを指定できます
コンパイル
効率を改善するために、メモリ内の正規表現コンパイラ
#のテキスト"ナンバーがで20.50 IS" = #R = re.compile(R "" " #の 小数点の前の\ dの+# # 。?# 小数点自体(または存在しないかもしれないが) # \はD *#は小数点の後の数字(のことができます。 )が存在しない # ""」、re.VERBOSE) #1 RET = re.search(R&LT、テキスト) #1 印刷(ret.groupを())
古代の詩のネットワークをクロール
インポート再 インポート要求が DEF (URL)をparse_page: ヘッダー = { " ユーザエージェント":" はMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 68.0.3440.106サファリ/ 537.36 " } 応答 = requests.get(URL、ヘッダ) テキスト = response.text タイトル = re.findall(R ' <DIV CLASS = "続き">。*?<B>(。*?)</ B> ' 、テキスト、再.DOTALL) プリント(タイトル) 王朝 = re.findall(R '<Pクラス= "ソース">。*?<。*?>(。*?)</a>の' テキスト、re.DOTALL) 著者 = re.findall(R ' <Pクラス= "ソース"> 。*?<。*?<。*?>(。*?)</a>の' テキスト、re.DOTALL) content_tags = re.findall(R ' <DIV CLASS = "contson"。*?> </ div>(*。?)' テキスト、re.DOTALL) 内容 = [] のためのコンテンツでcontent_tags: X = re.sub(R ' <。*?> "、"" 、コンテンツ) contents.append(バツ。ストリップ()) 詩 = [] のための値でZIP(タイトル、王朝、著者、コンテンツ): タイトル、dynastie、著者、コンテンツ = 値 詩 = { ' タイトル' :タイトル、 ' dynastie ' :dynastie、 ' 作成者' :著者、 ' コンテンツ' :コンテンツ } 詩。 (詩)を追加 するために詩における詩: プリント(詩) プリント(「= 」 * 40 ) デフメイン() のために、私は中範囲(1,11 ): URL = ' https://www.gushiwen.org/default_%s.aspx '%は、iが (URL)をparse_page 場合 __name__ == ' __main__ ' : メイン()