日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

正则表达式及其在python上的应用

發布時間:2023/12/10 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式及其在python上的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天學習了一早上正則表達式。如下內容部分轉載自《讀懂正則表達式就這么簡單》

一、什么是正則表達式

正則表達式是一種特殊的字符串模式,用于匹配一組字符串,就好比用模具做產品,而正則就是這個模具,定義一種規則去匹配符合規則的字符。

1.2 常用的正則匹配工具

在線匹配工具:
1. http://www.regexpal.com/
2. http://rubular.com/
3. http://tools.jb51.net/regex/create_reg
4. txt2re :這個在線網站支持解析一句話,從中可以生成匹配的正則表達式,且可以生成諸多類型的代碼。語言支持:Perl PHP Python Java Javascript ColdFusion C C++ Ruby VB VBScript J#.net C#.net C++.net VB.net

正則匹配軟件

McTracer

用過幾個之后還是覺得這個是最好用的,支持將正則導成對應的語言如java C# js等還幫你轉義了,Copy直接用就行了很方便,另外支持把正則表達式用法解釋,如哪一段是捕獲分組,哪段是貪婪匹配等等,總之用起來 So Happy .

二 正則字符簡單介紹

關于這部分建議跳到: 《讀懂正則表達式就這么簡單》
里面有很詳細的介紹。

另外關于python的正則表達式,主要使用re模塊。

我們以任務為導向介紹python正則表達式的用法。
假設給我們下面這段話:

I1113 23:35:50.763059 4460 solver.cpp:218] Iteration 400 (27.3075 iter/s, 0.7324s/20 iters), loss = 0.0202583 I1113 23:35:50.763141 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00101873 (* 1 = 0.00101873 loss) I1113 23:35:50.763165 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.0192396 (* 1 = 0.0192396 loss) I1113 23:35:50.763175 4460 sgd_solver.cpp:105] Iteration 400, lr = 0.001 I1113 23:35:51.751206 4460 solver.cpp:218] Iteration 420 (20.2456 iter/s, 0.987868s/20 iters), loss = 0.00228514 I1113 23:35:51.751341 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00140554 (* 1 = 0.00140554 loss) I1113 23:35:51.751379 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.000879596 (* 1 = 0.000879596 loss) I1113 23:35:51.751410 4460 sgd_solver.cpp:105] Iteration 420, lr = 0.001 I1113 23:35:52.523890 4460 solver.cpp:218] Iteration 440 (25.8933 iter/s, 0.772401s/20 iters), loss = 0.0132958 I1113 23:35:52.523974 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00312161 (* 1 = 0.00312161 loss) I1113 23:35:52.523988 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.0101742 (* 1 = 0.0101742 loss) I1113 23:35:52.523998 4460 sgd_solver.cpp:105] Iteration 440, lr = 0.001 I1113 23:35:53.461998 4460 solver.cpp:218] Iteration 460 (21.3325 iter/s, 0.937539s/20 iters), loss = 0.0154897 I1113 23:35:53.462057 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00780452 (* 1 = 0.00780452 loss) I1113 23:35:53.462069 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.00768522 (* 1 = 0.00768522 loss) I1113 23:35:53.462082 4460 sgd_solver.cpp:105] Iteration 460, lr = 0.001 I1113 23:35:54.356657 4460 solver.cpp:218] Iteration 480 (22.3584 iter/s, 0.894517s/20 iters), loss = 0.00275768 I1113 23:35:54.356729 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00107937 (* 1 = 0.00107937 loss) I1113 23:35:54.356739 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.00167831 (* 1 = 0.00167831 loss) I1113 23:35:54.356748 4460 sgd_solver.cpp:105] Iteration 480, lr = 0.001 I1113 23:35:55.153437 4460 solver.cpp:218] Iteration 500 (25.1734 iter/s, 0.79449s/20 iters), loss = 0.0230187 I1113 23:35:55.153519 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.0105348 (* 1 = 0.0105348 loss) I1113 23:35:55.153530 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.0124839 (* 1 = 0.0124839 loss) I1113 23:35:55.153542 4460 sgd_solver.cpp:105] Iteration 500, lr = 0.001 I1113 23:35:56.104395 4460 solver.cpp:218] Iteration 520 (21.0352 iter/s, 0.950785s/20 iters), loss = 0.0144106 I1113 23:35:56.104485 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00135394 (* 1 = 0.00135394 loss) I1113 23:35:56.104504 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.0130567 (* 1 = 0.0130567 loss) I1113 23:35:56.104521 4460 sgd_solver.cpp:105] Iteration 520, lr = 0.001 I1113 23:35:56.854631 4460 solver.cpp:218] Iteration 540 (26.6699 iter/s, 0.749909s/20 iters), loss = 0.0167331 I1113 23:35:56.854696 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00285695 (* 1 = 0.00285695 loss) I1113 23:35:56.854710 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.0138762 (* 1 = 0.0138762 loss) I1113 23:35:56.854720 4460 sgd_solver.cpp:105] Iteration 540, lr = 0.001 I1113 23:35:57.824692 4460 solver.cpp:218] Iteration 560 (20.6206 iter/s, 0.969902s/20 iters), loss = 0.00817935 I1113 23:35:57.824774 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.00557839 (* 1 = 0.00557839 loss) I1113 23:35:57.824791 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.00260096 (* 1 = 0.00260096 loss) I1113 23:35:57.824806 4460 sgd_solver.cpp:105] Iteration 560, lr = 0.001 I1113 23:35:58.670575 4460 solver.cpp:218] Iteration 580 (23.6486 iter/s, 0.845714s/20 iters), loss = 0.00420315 I1113 23:35:58.670637 4460 solver.cpp:237] Train net output #0: rpn_cls_loss = 0.0020043 (* 1 = 0.0020043 loss) I1113 23:35:58.670648 4460 solver.cpp:237] Train net output #1: rpn_loss_bbox = 0.00219884 (* 1 = 0.00219884 loss) I1113 23:35:58.670658 4460 sgd_solver.cpp:105] Iteration 580, lr = 0.001 I1114 00:34:17.348683 4460 sgd_solver.cpp:105] Iteration 79980, lr = 0.0001 speed: 0.044s / iter Wrote snapshot to: /data1/caiyong.wang/program/py-faster-rcnn/output/faster_rcnn_alt_opt/voc_2007_trainval/zf_rpn_stage1_iter_80000.caffemodel

希望我們解析出

Iteration 500 (25.1734 iter/s, 0.79449s/20 iters), loss = 0.0230187

中的Iteration與loss值。 其實這是faster rcnn生成的log文件一部分。

我們通過上面的語法學習,在MTracer中生成了正則表達式:

\bIteration\s(?<Iteration>\d+)\s\(.*\).*loss\s=\s(?<loss>\d*\.*\d+)\b

注:.*表示除換行符以外的任意字符,*表示0個或多個
并且采用多行模式解析出了我們想要的結果。
上面的表達式中,我們使用了捕獲分組。
如下圖:




那么如何轉化成python代碼?
正確的代碼如下:

import repattern = re.compile(r'\bIteration\s(?P<Iteration>\d+)\s\(.*\).*loss\s=\s(?P<loss>\d*\.*\d+)\b') arr=pattern.search("I1113 23:35:50.763059 4460 solver.cpp:218] Iteration 400 (27.3075 iter/s, 0.7324s/20 iters), loss = 0.0202583") arr.groups() arr.group() arr.group("Iteration") arr.group("loss")

結果為:

arr.groups() Out[147]: ('400', '0.0202583')arr.group() Out[148]: 'Iteration 400 (27.3075 iter/s, 0.7324s/20 iters), loss = 0.0202583'arr.group("Iteration") Out[149]: '400'arr.group("loss") Out[150]: '0.0202583'

這里python的命名組與以往的不一樣,使用的是 (?P<name>exp) 取代(?<name>exp)

而且compile里面必須加上r。


參考文獻:

  • http://blog.csdn.net/lwnylslwnyls/article/details/8901273
  • https://www.cnblogs.com/tk091/p/3702307.html
  • PYTHON的RE模塊理解(RE.COMPILE、RE.MATCH、RE.SEARCH)

三 python正則表達式的其他用法。

  • 多行匹配:
  • python多行匹配

    r = re.compile("需要的正則表達式", re.M)

    匹配到需要的字符,可以獲取紅括號內的數字

    r = re.compile("r([0-9]{5,})")

    舉個例子: 需要獲取20462和24729連個數字

    import re data = """r24062 line1hello word !!!!r24729 line2revision:24181"""r = re.compile("^r([0-9]{5,})", re.M)nums = r.findall(data)print nums--------------------- output:["24062", "24729"]

    注:{5,}表示至少重復5次
    2. 無捕獲分組
    當你要將一部分規則作為一個整體對它進行某些操作,比如指定其重復次數時,你需要將這部分規則用

    (?:)

    把它包圍起來。

    分支條件
    在正則表達式中,分支條件是一個很常用的條件。

    滿足條件A 或者 滿足條件B ,這個時候我們就可以使用分支條件了。

    分支條件使用的符號為

    |

    代碼示例:

    我們突然發現,它把字符串分割成兩個部分了

    I have a dog 和 cat 而不是 I have a dog 和 I have a cat

    如果我們只要區分dog和cat呢?正則要怎么寫?我添加一個括號試試

    還是不對,前面的 “I have a ”根本沒有匹配

    正確的寫法是應該使用無捕獲分組

    參考:正則表達式-python-無捕獲分組與分支選擇

    總結

    以上是生活随笔為你收集整理的正则表达式及其在python上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 好色艳妇小说 | 天堂资源中文 | 久久黄色网络 | 真实偷拍激情啪啪对白 | 成熟的女同志hd | 久久成年| 草莓视频18免费观看 | 亚洲婷婷在线观看 | 久热精品在线视频 | 欧美一区二区网站 | 亚洲人天堂 | 中国黄色一级片 | 午夜激情电影院 | 在线国产毛片 | 性少妇bbw张开| 男女性生活视频网站 | 亚洲视频一二三 | 久艹av | 日韩中文字幕在线视频 | 久草视频免费在线观看 | 理论片高清免费理伦片 | 亚洲va韩国va欧美va精品 | 日韩熟女精品一区二区三区 | 99久久国 | 天堂网www. | 欧美色淫 | 黄色特级片 | 亚洲欧美日韩色图 | 日本成人免费在线 | 中国黄色录像一级片 | 少妇高潮一区二区三区69 | 午夜桃色| 欧美成人综合在线 | 成人黄色短视频在线观看 | 日本在线一区 | 99九九热 | 国精产品一品二品国精品69xx | 国产毛片久久久久 | 日本理论片午伦夜理片在线观看 | 午夜av影院 | 欧美日韩一区二区三区电影 | 久久看片网 | 中文字幕 欧美激情 | 亚洲成人精品av | 久久发布国产伦子伦精品 | a天堂资源在线 | 高清精品xnxxcom | 日日操天天射 | 很黄的网站在线观看 | 成人久久久 | 在线观看黄色 | 精品一区二区在线播放 | 亚洲精品ww | 免费网站在线观看人数在哪动漫 | 国产一区二区精品久久 | 亚洲一区二区天堂 | 成人永久免费视频 | 操一操干一干 | 操操操操操操操操操操 | 91 在线视频| 国产成人无码AA精品区 | 日韩aa视频 | 国产馆在线观看 | 久久精品国产露脸对白 | 国产三级理论 | 就要操就要射 | 亚洲大胆 | 日本一级黄色录像 | 黄色片xxxx | 七仙女欲春2一级裸体片 | 国产一区二区成人 | 色偷偷亚洲| 天天摸天天干 | 狠狠干亚洲色图 | 青青操免费在线视频 | 无码人妻精品一区二区中文 | 亚洲第一偷拍 | 日本视频二区 | 国产精品午夜久久 | 久久久久久国产精品三级玉女聊斋 | 天天干狠狠干 | 国产精品久久综合青草亚洲AV | 亚洲福利视频一区 | 国产在线观看成人 | 九色porny原创自拍 | 日本大尺度吃奶做爰久久久绯色 | 天狂传说之巴啦啦小魔仙 | 精品午夜福利在线观看 | 欧美一级黄色大片 | 精品欧美视频 | 欧美 日韩 国产 高清 | 手机在线观看日韩av | 午夜爱爱免费视频 | 久操视频在线 | 色悠悠网址 | 91青青草| 国产一级做a爰片久久毛片男男 | 噼里啪啦动漫高清在线观看 | 法国极品成人h版 |