国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python如何使用正則表達式的前向、后向搜索及前向搜索否定模式

2020-02-16 10:37:42
字體:
來源:轉載
供稿:網友

前言

在許多的情況下,很多要匹配內容是一起出現,或者一起不出現的。比如《》,< >,這樣的括號,不存在使用半個的情況。因此,在正則表達式里也有一致性的判斷,要么兩個尖括號一起出現,要么一個也不要出現。怎么樣來實現這種判斷呢?針對這種情況得引入新的正則表達式的語法:(?=pattern),這個語法它會向前搜索或者向后搜索相關內容,如果不會出現就不能匹配。不過,這個匹配不會消耗任何輸入的字符,它只是查看一下。

例子如下:

#python 3.6 #蔡軍生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re  address = re.compile(  '''''  # A name is made up of letters, and may include "."  # for title abbreviations and middle initials.  ((?P<name>   ([/w.,]+/s+)*[/w.,]+   )   /s+  ) # name is no longer optional   # LOOKAHEAD  # Email addresses are wrapped in angle brackets, but only  # if both are present or neither is.  (?= (<.*>$)  # remainder wrapped in angle brackets   |   ([^<].*[^>]$) # remainder *not* wrapped in angle brackets   )   <? # optional opening angle bracket   # The address itself: username@domain.tld  (?P<email>   [/w/d.+-]+  # username   @   ([/w/d.]+/.)+ # domain name prefix   (com|org|edu) # limit the allowed top-level domains  )   >? # optional closing angle bracket  ''',  re.VERBOSE)  candidates = [  u'First Last <first.last@example.com>',  u'No Brackets first.last@example.com',  u'Open Bracket <first.last@example.com',  u'Close Bracket first.last@example.com>', ]  for candidate in candidates:  print('Candidate:', candidate)  match = address.search(candidate)  if match:   print(' Name :', match.groupdict()['name'])   print(' Email:', match.groupdict()['email'])  else:   print(' No match') 

結果輸出如下:

Candidate: First Last <first.last@example.com> Name : First Last Email: first.last@example.comCandidate: No Brackets first.last@example.com Name : No Brackets Email: first.last@example.comCandidate: Open Bracket <first.last@example.com No matchCandidate: Close Bracket first.last@example.com> No match

python里使用正則表達式的前向搜索否定模式

上面學習前向搜索或后向搜索模式(?=pattern),這個模式里看到有等于號=,它是表示一定相等,其實前向搜索模式里,還有不相等的判斷。比如你需要識別EMAIL地址:noreply@example.com,這個EMAIL地址大多數是不需要回復的,所以我們要把這個EMAIL地址識別出來,并且丟掉它。怎么辦呢?這時你就需要使用前向搜索否定模式,它的語法是這樣:(?!pattern),這里的感嘆號就是表示非,不需要的意思。比如遇到這樣的字符串:noreply@example.com,它會判斷noreply@是否相同,如果相同,就丟掉這個模式識別,不再匹配。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰州市| 犍为县| 平湖市| 双辽市| 安庆市| 平潭县| 淮安市| 正宁县| 大方县| 新竹市| 胶州市| 达孜县| 曲阳县| 霍邱县| 金门县| 巢湖市| 渝中区| 道真| 墨玉县| 丘北县| 嘉祥县| 宁陵县| 增城市| 连江县| 右玉县| 宜兰县| 冷水江市| 开鲁县| 阳山县| 通道| 信丰县| 滦平县| 乾安县| 安阳市| 东兴市| 南乐县| 建平县| 克什克腾旗| 博野县| 拉孜县| 即墨市|