日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
一日一技:讓你的正則表達式可讀性提高一百倍

正則表達式這個東西,強大是強大,但寫出來跟個表情符號一樣。自己寫的表達式,過一個月來看,自己都不記得是什么意思了。比如下面這個:

武陵源網站建設公司創(chuàng)新互聯公司,武陵源網站設計制作,有大型網站制作公司豐富經驗。已為武陵源上1000家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的武陵源做網站的公司定做!

pattern = r"((?:\(\s*)?[A-Z]*H\d+[a-z]*(?:\s*\+\s*[A-Z]*H\d+[a-z]*)*(?:\s*[\):+])?)(.*?)(?=(?:\(\s*)?[A-Z]*H\d+[a-z]*(?:\s*\+\s*[A-Z]*H\d+[a-z]*)*(?:\s*[\):+])?(?![^\w\s])|$)"

有沒有什么辦法提高正則表達式的可讀性呢?我們知道,提高代碼可讀性的方法之一就是寫注釋,那么正則表達式能不能寫注釋呢?

例如對于下面這個句子:

msg = '我叫青南,我的密碼是:123kingname456,請注意保密。'

我要提取其中的密碼123kingname456,那么我的正則表達式可能是這樣的:

pattern = ':(.*?),'

我能不能把它寫成這樣:

pattern = '''
: # 開始標志
(.*?) #從開始標志的下一個字符開始的任意字符
, #遇到英文逗號就停止
'''

這樣寫就清晰多了,每個部分是什么作用全都清清楚楚。

但顯然直接使用肯定什么都提取不到,如下圖所示:

但我今天在逛Python正則表達式文檔的時候,發(fā)現了一個好東西:

使用它,可以讓你的正則表達式擁有注釋,如下圖所示:

re.VERBOSE?也可以簡稱為re.X,如下圖所示:

本文最開頭的復雜正則表達式,使用了注釋以后,就會變得更可讀:

pattern = r"""
( # code (capture)
# BEGIN multicode

(?: \( \s* )? # maybe open paren and maybe space

# code
[A-Z]*H # prefix
\d+ # digits
[a-z]* # suffix

(?: # maybe followed by other codes,
\s* \+ \s* # ... plus-separated

# code
[A-Z]*H # prefix
\d+ # digits
[a-z]* # suffix
)*

(?: \s* [\):+] )? # maybe space and maybe close paren or colon or plus

# END multicode
)

( .*? ) # message (capture): everything ...

(?= # ... up to (but excluding) ...
# ... the next code

# BEGIN multicode

(?: \( \s* )? # maybe open paren and maybe space

# code
[A-Z]*H # prefix
\d+ # digits
[a-z]* # suffix

(?: # maybe followed by other codes,
\s* \+ \s* # ... plus-separated

# code
[A-Z]*H # prefix
\d+ # digits
[a-z]* # suffix
)*

(?: \s* [\):+] )? # maybe space and maybe close paren or colon or plus

# END multicode

# (but not when followed by punctuation)
(?! [^\w\s] )

# ... or the end
| $
)
"""

網站名稱:一日一技:讓你的正則表達式可讀性提高一百倍
文章源于:http://www.5511xx.com/article/coidcsj.html