国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python利用正則表達式提取字符串

python利用正則表達式提取字符串

2020-09-14 10:27風引 Python

相信大家在日常工作中經常會遇見在文本中提取特定位置字符串的需求,python的正則性很好,很適合做這類字符串的提取,所以這篇文章就給大家詳細講一下提取的技巧,并通過示例代碼講解,對大家理解很有幫助,有需要的朋友們下

前言

正則表達式的基礎知識就不說了,有興趣的可以點擊這里提取一般分兩種情況,一種是提取在文本中提取單個位置的字符串,另一種是提取連續多個位置的字符串。日志分析會遇到這種情況,下面我會分別講一下對應的方法。

一、單個位置的字符串提取

這種情況我們可以使用(.+?)這個正則表達式來提取。 舉例,一個字符串"a123b",如果我們想提取ab之間的值123,可以使用findall配合正則表達式,這樣會返回一個包含所以符合情況的list。

代碼如下:

?
1
2
3
4
import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#
輸出['123']

1.1貪婪和非貪婪匹配

如果我們有一個字符串”a123b456b”,如果我們想匹配a和最后一個b之間的所有值而非a和第一個出現的b之間的值,可以用?來控制正則貪婪和非貪婪匹配的情況。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
import re
str = "a123b456b"
 
print re.findall(r"a(.+?)b", str)
#輸出['123']#?控制只匹配0或1個,所以只會輸出和最近的b之間的匹配情況
 
print re.findall(r"a(.+)b", str)
#輸出['123b456']
 
print re.findall(r"a(.*)b", str)
#輸出['123b456']

1.2多行匹配

如果你要多行匹配,那么需要加上re.S和re.M標志. 加上re.S后。將會匹配換行符,默認.不會匹配換行符。

代碼如下:

?
1
2
3
4
5
6
7
8
str = "a23b\na34b"
 
re.findall(r"a(\d+)b.+a(\d+)b", str)
#輸出[]
#因為不能處理str中間有\n換行的情況
 
re.findall(r"a(\d+)b.+a(\d+)b", str, re.S)
#s輸出[('23', '34')]

加上re.M后,^$標志將會匹配每一行,默認^和$只會匹配第一行。

代碼如下:

?
1
2
3
4
5
6
7
str = "a23b\na34b"
 
re.findall(r"^a(\d+)b", str)
#輸出['23']
 
re.findall(r"^a(\d+)b", str, re.M)
#輸出['23', '34']

二、連續多個位置的字符串提取

這種情況我們可以使用(?P<name>…)這個正則表達式來提取。舉例,如果我們有一行webserver的access日志:'192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"',我們想提取這行日志里面所有的內容,可以寫多個(?P<name>expr)來提取,其中name可以更改為你為該位置字符串命名的變量,expr改成提取位置的正則即可。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
import re
line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search"
"Mozilla/5.0"'
reg = re.compile('^(?P<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)"
(?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"')
regMatch = reg.match(line)
linebits = regMatch.groupdict()
print linebits
for k, v in linebits.items() :
 print k+": "+v

輸出的結果為:

?
1
2
3
4
5
6
status: 200
referrer:
request: GET /api HTTP/1.1
user_agent: Mozilla/5.0
date: 25/Oct/2012:14:46:34size: 44
remote_ip: 192.168.0.1

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩精品www | 不卡视频在线 | 羞羞视频在线看 | 一级做a爰片久久毛片免费陪 | 欧美精品综合 | 久久精品无码一区二区三区 | 精品少妇一区二区三区在线播放 | 在线 欧美 日韩 | 中文字幕婷婷 | 四季久久免费一区二区三区四区 | 国产精品一区二区在线观看 | 亚洲福利一区二区 | www.日韩系列 | 日本不卡一区二区 | 久久国产精品电影 | 亚洲激情中文字幕 | 成人免费黄色毛片 | 欧美精品一区二区三区在线播放 | 欧美寂寞影院 | 久久精品亚洲精品 | 九九九久久久 | 久艹精品| 中文字幕视频一区 | 欧美 日韩 中文 | 91精品久久| 一区二区三区日韩 | 波多野结衣一区二区三区免费视频 | 免费观看一级视频 | 国产一区二区亚洲 | 国产韩国精品一区二区三区 | 日韩一二区 | 午夜婷婷丁香 | 日韩免费一区 | 欧美日韩亚洲一区二区 | 夜夜爽av福利精品导航 | 国产视频一二三区 | 日韩第一区 | 欧美a网| 国产看片网站 | 黄色毛片视频网站 | 亚洲一区中文字幕 |