麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

實用的正則表達式學習日記

2024-09-07 17:40:13
字體:
來源:轉載
供稿:網友

我們在學習正則表達式的時候最好將學習過程中的重要知識記錄下來這樣才有助于我們更好地掌握正則表達式,今天小編就將為大家分享一些實用的正則表達式學習日記,希望對大家的學習有所幫助。

//匹配文本,這個偶爾比較好用,但是要小心字符中包含/E
$str?=?'[a-z]';
$str?=?preg_replace('//G[a-z]/E/',?'',?$str);
echo?$str;?//打印空,全被替換掉了,相關大概就是preg_quote功能

//給匹配結果命名,這樣在匹配結果中就可以用這個名稱來獲取值
$str?=?'abc123abc';
preg_match('/(?P<num>/d+)/',?$str,?$arr);
echo?$arr['num'];?//相當于echo?$arr[1]

//僅用于分組的括號,匹配內容不會被變量捕獲,有時候需要這樣提高執行效率
$str?=?'abc123abc';
preg_match('/abc(?:/d+)/',?$str,?$arr);
echo?$arr[1];?//除了$arr[0]外沒有$arr[1]了,不會賦予/1

//插入的好幫手,向前、向后錨點搜索位置,每3位添加一個逗號
$str?=?'fdfad123456789fdfd';
$str?=?preg_replace('/(?<=/d)(?=(/d{3})+(?!/d))/',?',',?$str);
echo?$str;?//打印?fdfad123,456,789fdfd

//以最少的結果匹配
$str?=?123456;
preg_match('//d+/',?$str,?$arr);
echo?$arr[0];?//是人都知道是123456吧
preg_match('//d+?/',?$str,?$arr);
echo?$arr[0];?//這次是1

//一個比較有用的,可以判斷前面的是否有匹配過,比如下邊的例子,可以忽略等號右邊是否有單引號雙引號或者什么都沒有
$str?=?<<<HTML
<font?size=12></font>
<font?size='13'></font>
<font?size="14"></font>
<font?size="15></font>
HTML;
preg_match_all('/<font/s+size=([/'"]?)(/d+)/1[^>]*>/',?$str,?$arr);
print_r($arr);
/*
Array
(
????[0]?=>?12
????[1]?=>?13
????[2]?=>?14
)
*/

//部分模式修飾符,模式修飾符也可以放在表達式中的
//這里匹配符合XHTML規范的style里的顏色值,大寫的STYLE被忽略了,但是里面的color可以大小寫無所謂
$str?=?'<b?style="COLOR:red"></b><b?STYLE="color:blue"></b><b?style="color:green"></b>';
preg_match_all('/style=([/'"]?)(?i)color:(/w+)/1(?-i)/',?$str,?$arr);
print_r($arr[2])

//也可以把匹配內容放到里面,用:隔開,就不用寫結束(?-i)
//preg_match_all('/style=([/'"]?)(?i:color:(/w+))/1/',?$str,?$arr);
//再看一例子
$str?=?'<B>Style</B>';
preg_match('/<B>(?i:style)<//B>/',?$str,?$arr);
print_r($arr);?//可以匹配到
$str?=?'<B>Style</b>';
preg_match('/<B>(?i:style)<//B>/',?$str,?$arr);
print_r($arr);?//什么都沒匹配到

//單詞檢索,可惜只能用在英文
$str?=?'I/'m?a?teacher';
preg_match_all('//b[a-z]+/b/i',?$str,?$arr);
print_r($arr)

//u修飾符,按unicode匹配
$str?=?'你您';
$str?=?preg_replace('/[你您]/',?'you',?$str);
echo?$str;?//被拆開了,打印4次you

//看下面加上u修飾符后的效果,該修飾符需要編碼utf-8否則會報錯
//我的文本都是gb2312,所以要轉成utf-8
$str?=?iconv('gb2312',?'utf-8',?'你您');
$regex?=?iconv('gb2312',?'utf-8',?'/[你您]/u');
$str?=?preg_replace($regex,?'you',?$str);
echo?$str;?//打印2次you

//x模式修飾符,可以忽略空白和加注釋
$str?=?'test?Test';
preg_match('/test??#只匹配小寫的test/x',?$str,?$arr);
print_r($arr);

//排除環視(?<!...)?(?!...)、忽略優先?*??+?????的復合使用
$str?=?'test?<B>test1<B>?test2</B>';
preg_match('/<B>(?:.(?<!<B>))*<//B>/i',?$str,?$arr);
//或者?preg_match('/<B>(?:(?!<B>).)*<//B>/i',?$str,?$arr);
print_r($arr)

//當時這樣寫應付不了?$str?=?'test?<B>test1<B>?test2</B>?test3</B>';
//改寫一下正則既可?preg_match_all('/<B>(?:(?!<//?B>).)*<//B>/i',?$str,?$arr);
//根據上面來完成一個最簡單的UBB替換
$str?=?'test?[b]test1[b]?test2[/b]?test3[/b]test';
$str?=?preg_replace('//[B/]((?:(?!/[//?B/]).)*)/[//B/]/i',?'<b>/1</b>',?$str);
$str?=?preg_replace('//[B/]((?:(?!/[//?B/]).)*)/[//B/]/i',?'<b>/1</b>',?$str);
print_r($str)

//如果已經確認回朔并不會有匹配結果,可以使用固化分組來放棄備用狀態提高效率
$str?=?'Subject';
preg_match('/(/w+):/',?$str,?$arr);

//用以下方法代替
//在第一組匹配規則匹配到文本末尾t時匹配結束,啟用第二組匹配規則:并不會找到結果,所以這個時候回朔查找,但是/w不會包含:,所以可以直接放棄,
preg_match('/(?>/w+):/',?$str,?$arr);

上文就是小編為大家介紹實用的正則表達式學習日記,正則在自然語言處理中廣泛運用到,希望本文內容對前端開發者有多幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青热久思思 | 欧美亚洲国产一区二区三区 | 成人精品免费看 | www.99久| 欧美一级特黄a | 日朝毛片 | 国产又白又嫩又紧又爽18p | 一级黄色毛片免费 | 看免费一级毛片 | 桥本有菜免费av一区二区三区 | 欧美日本在线视频 | 欧美成人久久 | 天堂成人国产精品一区 | 久久久国产精品免费观看 | 日本精品婷婷久久爽一下 | 国产精品视频自拍 | 线观看免费完整aaa 欧美在线一级 | 逼特逼视频在线观看 | 国产一区二区精彩视频 | av电影在线免费 | 欧美日韩专区国产精品 | 亚洲自拍第二页 | 艹男人的日日夜夜 | 毛片三区 | 国产女同疯狂激烈互摸 | 免费永久看羞羞片网站入口 | 国产精品欧美久久久久一区二区 | 成人18免费观看 | 久久久久久久久久久亚洲 | 欧美精品久久久久久久久久 | 高清国产在线 | 色操网| 国产羞羞视频在线免费观看 | 一级免费特黄视频 | 在线看一区二区三区 | 欧美一级黄色片在线观看 | 中文字幕爱爱视频 | 国产免费中文字幕 | 国产一区二区三区手机在线 | av免费在线观看免费 | 欧美粗暴analvideos |