校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 正則表達式筆記三則

正則表達式筆記三則

熱門標簽:自己做的電銷機器人 浙江營銷外呼系統有哪些 山東外呼系統聯系方式 哈爾濱公司外呼系統代理 地圖標注店鋪地圖標注酒店 淄博市張店區地圖標注 惠安地圖標注 遼寧秒客來電話機器人 上海銷售電銷機器人軟件
首字母大小寫無關模式
有一段時間,我在寫正則表達式來匹配Drug關鍵字時,經常寫出 /viagra|cialis|anti-ed/ 這樣的表達式。為了讓它更美觀,我會給關鍵詞排序;為了提升速度,我會使用 /[Vv]iagra/ 而非/viagra/i ,只讓必要的部分進行大小寫通配模式。確切地說,我是需要對每個單詞的首字母進行大小寫無關的匹配。

我寫了這樣的一個函數,專門用來批量轉換。

復制代碼 代碼如下:

#convert regex to sorted list, then provide both lower/upper case for the first letter of each word
#luf means lower upper first

sub luf{
# split the regex with the delimiter |
my @arr=sort(split(/\|/,shift));

# provide both the upper and lower case for the
# first leffer of each word
foreach (@arr){s/\b([a-zA-Z])/[\l$1\u$1]/g;}

# join the keyword to a regex again
join('|',@arr);
}

print luf "sex pill|viagra|cialis|anti-ed";
# the output is:[aA]nti-[eE]d|[cC]ialis|[sS]ex [pP]ill|[vV]iagra

控制全局匹配下次開始的位置

記得jyf曾經問過我,如何控制匹配開始的位置。嗯,現在我可以回答這個問題了。Perl 提供了 pos 函數,可以在 /g 全局匹配中調整下次匹配開始的位置。舉例如下:
復制代碼 代碼如下:

$_="abcdefg";
while(/../g)
{
print $;
}

其輸出結果是每兩個字母,即ab, cd, ef

可以使用 pos($_)來重新定位下一次匹配開始的位置,如:

復制代碼 代碼如下:

$_="abcdefg";
while(/../g)
{
pos($_)--; #pos($_)++;
print $;
}

輸出結果:

復制代碼 代碼如下:

pos($_)--: ab, bc, cd, de, ef, fg.
pos($_)++: ab, de.

可以閱讀 Perl 文檔中關于 pos的章節獲取詳細信息。

散列與正則表達式替換
《effective-perl-2e》第三章有這樣一個例子(見下面的代碼),將特殊符號轉義。
復制代碼 代碼如下:

my %ent = { '' => 'amp', '' => 'lt', '>' => 'gt' };
$html =~ s/([>])/$ent{$1};/g;

這個例子非常非常巧妙。它靈活地運用了散列這種數據結構,將待替換的部分作為 key ,將與其對應的替換內容作為 value 。這樣只要有匹配就會捕獲,然后將捕獲的部分作為 key ,反查到 value 并運用到替換中,體現了高級語言的效率。

不過,這樣的 Perl 代碼,能否移植到 Python 中呢? Python 同樣支持正則,支持散列(Python 中叫做 Dictionary),但是似乎不支持在替換過程中插入太多花哨的東西(替換行內變量內插)。

查閱 Python 的文檔,(在 shell 下 執行 python ,然后 import re,然后 help(re)),:

復制代碼 代碼如下:

sub(pattern, repl, string, count=0)
Return the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in string by the
replacement repl. repl can be either a string or a callable;
if a string, backslash escapes in it are processed. If it is
a callable, it's passed the match object and must return
a replacement string to be used.

原來 python 和 php 一樣,是支持在替換的過程中使用 callable 回調函數的。該函數的默認參數是一個匹配對象變量。這樣一來,問題就簡單了:

復制代碼 代碼如下:

ent={'':"lt",
'>':"gt",
'':"amp",
}

def rep(mo):
return ent[mo.group(1)]

html=re.sub(r"([>])",rep, html)

python 替換函數 callback 的關鍵點在于其參數是一個匹配對象變量。只要明白了這一點,查一下手冊,看看該種對象都有哪些屬性,一一拿來使用,就能寫出靈活高效的 python 正則替換代碼。

標簽:西安 無錫 泰州 重慶 長沙 銅川 綿陽 宣城

巨人網絡通訊聲明:本文標題《正則表達式筆記三則》,本文關鍵詞  正則,表達式,筆記,三則,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正則表達式筆記三則》相關的同類信息!
  • 本頁收集關于正則表達式筆記三則的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲美女视频在线| 亚洲第一主播视频| 欧美精品一二三| 粉嫩在线一区二区三区视频| 三级亚洲高清视频| 亚洲女同ⅹxx女同tv| 久久久久久久久蜜桃| 欧美日韩精品福利| 色一情一乱一乱一91av| 国产精品一区二区你懂的| 亚洲一线二线三线视频| 麻豆91精品91久久久的内涵| 精品国产3级a| 国产精品一区二区无线| 日本不卡视频在线观看| 亚洲激情六月丁香| 国产农村妇女毛片精品久久麻豆 | 欧美日韩免费一区二区三区| 国产精品99久久久久久久女警| 日韩精品亚洲一区| 亚洲久草在线视频| 国产精品久久久久毛片软件| 精品999久久久| 欧美浪妇xxxx高跟鞋交| 在线精品观看国产| 色综合激情五月| jvid福利写真一区二区三区| 国产一本一道久久香蕉| 麻豆国产精品官网| 日韩精品欧美精品| 亚洲高清免费在线| 亚洲精品国产无天堂网2021 | 欧美网站大全在线观看| 91在线精品一区二区三区| 成人网在线免费视频| 国产激情视频一区二区在线观看 | 国产精品99久久久久久久女警| 免费观看成人av| 日韩电影免费在线| 人人超碰91尤物精品国产| 青青草成人在线观看| 日本伊人色综合网| 久久精品国产亚洲5555| 黄色精品一二区| 国产久卡久卡久卡久卡视频精品| 国产乱码精品一区二区三区av | 在线免费观看一区| 91黄色免费看| 51精品久久久久久久蜜臀| 69久久夜色精品国产69蝌蚪网| 欧美日韩国产小视频| 欧美人妖巨大在线| 日韩欧美视频一区| 久久精品亚洲一区二区三区浴池| 日本一区免费视频| 亚洲欧洲美洲综合色网| 亚洲一区二区三区四区中文字幕| 亚洲电影视频在线| 久久精品免费看| 国产mv日韩mv欧美| 在线免费一区三区| 在线综合+亚洲+欧美中文字幕| 欧美成人午夜电影| 中文成人av在线| 亚洲小说欧美激情另类| 日韩精品91亚洲二区在线观看| 99久久精品一区二区| 9l国产精品久久久久麻豆| 亚洲另类在线制服丝袜| 午夜一区二区三区视频| 人人狠狠综合久久亚洲| 国产成人一级电影| 色激情天天射综合网| 欧美高清dvd| 国产欧美日韩在线| 亚洲va欧美va天堂v国产综合| 精品影视av免费| 91麻豆高清视频| 日韩丝袜美女视频| 国产精品美女久久久久久2018 | 蜜臀av国产精品久久久久| 国产一区二区三区四区在线观看| 91原创在线视频| 日韩一区二区三区电影| 国产精品国产三级国产普通话99| 一区二区免费看| 国产精品2024| 欧美日韩中文另类| 国产欧美日韩激情| 日韩经典一区二区| 成人不卡免费av| 91精品免费在线观看| 国产精品久久二区二区| 久久精品国产久精国产爱| 91亚洲精品久久久蜜桃| 日韩免费看的电影| 一区二区三区高清| 成人一区二区视频| 日韩欧美亚洲一区二区| 亚洲一区影音先锋| 成人av在线播放网址| 日韩欧美亚洲国产精品字幕久久久| 亚洲情趣在线观看| 粉嫩aⅴ一区二区三区四区| 日韩午夜在线影院| 亚洲一区视频在线| av电影一区二区| 精品国产91九色蝌蚪| 亚洲成人av资源| 91视频免费观看| 国产精品私房写真福利视频| 精品一区二区三区免费视频| 欧美日韩国产首页在线观看| 亚洲色大成网站www久久九九| 国产精品一区不卡| 精品久久免费看| 日韩精品电影在线| 欧美猛男男办公室激情| 一区二区三区精品| 91丝袜高跟美女视频| 中文字幕不卡在线观看| 国产乱子伦视频一区二区三区| 日韩一区二区三区在线| 日韩黄色免费电影| 欧美日韩国产一二三| 亚洲1区2区3区4区| 欧美日韩国产精品自在自线| 亚洲综合免费观看高清完整版在线| 97se亚洲国产综合在线| 中文字幕一区二区三区乱码在线| 国产成人午夜视频| 国产片一区二区| 成人看片黄a免费看在线| 国产日韩成人精品| 成人在线视频一区| 国产精品日日摸夜夜摸av| 国产69精品久久777的优势| 欧美国产欧美综合| caoporn国产一区二区| 国产精品福利电影一区二区三区四区 | 久久久亚洲午夜电影| 国产麻豆午夜三级精品| 欧美精品一区二区三区蜜臀| 亚洲人成网站精品片在线观看 | 欧美一区二区三区成人| 色94色欧美sute亚洲线路二| 国产精品久久久99| 91香蕉视频在线| 亚洲激情自拍视频| 欧美人与z0zoxxxx视频| 美腿丝袜亚洲三区| 国产欧美一区二区精品性色 | 欧美三级电影在线看| 午夜视频一区二区| 精品国产乱码久久久久久浪潮| 国产一区二区三区四区五区入口| 国产日韩欧美一区二区三区乱码| 99在线热播精品免费| 亚洲国产三级在线| 欧美成人三级在线| 成人av在线影院| 亚洲国产精品视频| 欧美成人官网二区| 99久久精品免费精品国产| 亚洲成人综合视频| 久久免费看少妇高潮| 91亚洲精品一区二区乱码| 日韩在线a电影| 国产视频911| 欧美体内she精视频| 国产资源在线一区| 一区二区激情小说| 精品卡一卡二卡三卡四在线| 国产成人精品综合在线观看| 老司机免费视频一区二区三区| 一区二区三区在线观看动漫| 综合久久综合久久| 亚洲欧洲成人精品av97| 精品视频全国免费看| 国内欧美视频一区二区| 亚洲视频免费在线观看| 91精品黄色片免费大全| caoporn国产精品| 久久精品久久综合| 一区二区三区波多野结衣在线观看| 欧美mv和日韩mv国产网站| 91蜜桃传媒精品久久久一区二区| 久久精品国产一区二区三| 樱桃视频在线观看一区| 国产情人综合久久777777| 在线不卡欧美精品一区二区三区| 大美女一区二区三区| 日本欧美在线看| 亚洲一区在线观看免费观看电影高清| 久久这里只精品最新地址| 欧美日本一区二区在线观看| 91丨porny丨国产| 国产成人久久精品77777最新版本| 午夜视频在线观看一区| 亚洲日本电影在线|