亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

正則基礎之 /b 單詞邊界

2020-01-20 22:21:57
字體:
來源:轉載
供稿:網友
1概述
“/b”匹配單詞邊界,不匹配任何字符。
“/b”匹配的只是一個位置,這個位置的一側是構成單詞的字符,另一側為非單詞字符、字符串的開始或結束位置。“/b”是零寬度的。
基本上所有的資料里都會說“/b”是單詞邊界,但是關于“單詞”的范圍卻是少有提及。通常情況下,正則表達式中所謂的“單詞”,就是由“/w”所定義的字符所組成的子串。
“/b”表示所在位置的一側為單詞字符,另一側為非單詞字符、字符串的開始或結束位置,也就相當于
(?<!/w)(?=/w)|(?<=/w)(?!/w)
思考:以下寫法為什么不等價于“/b”
(?<=/W)(?=/w)|(?<=/w)(?=/W)
2/w的范圍
即然涉及到“/w”,那就要先考察一下它的范圍。
在支持ASCII碼的語言中,如JavaScript,“/w”等價于[a-zA-Z0-9_] ;
在支持Unicode的語言中,如.NET,默認情況下,“/w”除可以匹配[a-zA-Z0-9_]外,還可以匹配一些Unicode字符集,如漢字,全角數字等等。
幾乎所有常見的語言都遵循這樣一個規律,只有Java是個例外。在Java中,“/w”的表現是比較奇怪的,Java是支持Unicode的,但Java的正則中的“/w”卻是等價于[a-zA-Z0-9_]的。
先來看一下“/w”在幾種語言中匹配的例子
JavaScript
復制代碼 代碼如下:

<script language="javascript">
var str = "abc_123中文_d3=efg漢字%";
var reg = //w+/g;
var arr = str.match(reg);
if(arr != null)
{
for(var i=0;i<arr.length;i++)
{
document.write(arr[i] + "<br />");
}
}
</script>
//JavaScript中輸出
abc_123
_d3
efg

C#
復制代碼 代碼如下:

string test = "abc_123中文_d3=efg漢字%";
MatchCollection mc = Regex.Matches(test, @"/w+");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "/n";
}
//C#中輸出
abc_123中文_d3
efg漢字

Java
復制代碼 代碼如下:

String test = "abc_123中文_d3=efg漢字%";
String reg = "http://w+";
Matcher m = Pattern.compile(reg).matcher(test);
while(m.find())
{
System.out.println(m.group());
}
//Java中輸出
abc_123
_d3
efg

可以看到,“/w”在Java中的輸出和JavaScript中是一樣的,都是只支持ASCII字符。
3 /b的范圍
常見語言中“/w”的范圍確定了,那么是不是可以認為“/b”的匹配范圍與“/w”也是一致的呢?
再看下下面的例子:
源字符串:abc_123中文_d3=漢字efg
正則表達式:./b.
JavaScript
復制代碼 代碼如下:

<script language="javascript">
var str = "abc_123中文_d3=efg漢字%";
var reg = /./b./g;
var arr = str.match(reg);
if(arr != null)
{
for(var i=0;i<arr.length;i++)
{
document.write(arr[i] + "<br />");
}
}
</script>
//JavaScript中輸出
3中
文_
3=
g漢

C#
復制代碼 代碼如下:

string test = "abc_123中文_d3=efg漢字%";
MatchCollection mc = Regex.Matches(test, @"./b.");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "/n";
}
//C#中輸出
3=
字%

Java
復制代碼 代碼如下:

String test = "abc_123中文_d3=efg漢字%";
String reg = ".//b.";
Matcher m = Pattern.compile(reg).matcher(test);
while(m.find())
{
System.out.println(m.group());
}
//Java中輸出
3=
字%

可以看到,Java的輸出和.NET是一致的,“/b”在Java中是支持Unicode的。
所以總的來說,Java中的“/w”是很奇怪的,而“/b”是與其它語言表現一致的,在使用時需要注意。
4 /b應用場景
4.1 基礎應用
“/b”一般應用在需要匹配某一單詞字符組成的子串,但這一字符不能包含在同樣由單詞字符組成的更長的子串中。
比如要替換掉一段英文中的單詞“to”,而“today”顯然不在替換的范圍內,所以正則可以用“/bto/b”來限定。
用得比較多的場景是在HTML標簽的匹配中,用以區分相互包含的標簽,比如要過濾掉<b>、</b>、<p…>、<img…>等標簽,但要保留<br />標簽,正則可以寫成“<(/?b|p|img)/b[^>]*>”。
舉例:統計以“,”分割的元素中“3”的個數
string test = "137,1,33,4,3,6,21,3,35,93,2,98";
int count = Regex.Matches(test, @"/b3/b").Count; //結果:2
4.2 進階應用
稍復雜一些的應用通常都是與其它一些正則語法規則一起使用的,參考一個帖子
求一正則表達式
4.3 特殊情況
“/b”用在正則中,通常情況下都是表示單詞邊界的,只有在字符組中,它表示的是退格鍵,即
[a-z/b]
此處的“/b”表示的是退格鍵,而不是單詞邊界。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩中文在线观看| 日本久久精品视频| 欧美日韩午夜视频在线观看| 黑人与娇小精品av专区| 日韩免费av片在线观看| 日韩av在线天堂网| 欧美激情女人20p| 中文字幕最新精品| 欧美噜噜久久久xxx| 成人久久18免费网站图片| 日韩亚洲第一页| 国产精品成人播放| 成人午夜在线视频一区| 国产不卡在线观看| 亚州国产精品久久久| 久久精品成人一区二区三区| 51午夜精品视频| 国内精品久久久久伊人av| 欧美高清视频在线观看| 欧美激情高清视频| 精品视频www| 日韩av毛片网| 亚洲美女动态图120秒| 亚洲美女性生活视频| 欧美日本在线视频中文字字幕| 亚洲成人激情在线观看| 日本一区二区在线免费播放| 亚洲影影院av| 视频一区视频二区国产精品| 精品久久久久久久久国产字幕| 亚洲性生活视频| 久久久久久午夜| 91sao在线观看国产| 亚洲美女www午夜| 亚洲欧洲免费视频| 亚洲精品资源美女情侣酒店| 日本高清+成人网在线观看| 久久免费国产精品1| 91精品国产91久久久久久不卡| 国产精品久久一区主播| 久久99热精品这里久久精品| 亚洲成av人片在线观看香蕉| 久久久女人电视剧免费播放下载| 亚洲成人av资源网| 亚洲三级免费看| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美性受xxx| 久久免费在线观看| 欧美中文字幕在线播放| 国产成人综合久久| 亚洲欧美中文字幕| 欧美精品一区二区三区国产精品| 日韩国产一区三区| 亚洲女成人图区| 91精品国产高清自在线看超| 国产一区二区丝袜高跟鞋图片| 欧美日韩在线免费| 九九久久精品一区| 国产精品亚洲视频在线观看| 国产亚洲激情视频在线| 欧美国产在线视频| 精品久久久一区| 国产精品久久久久久久app| 91成人天堂久久成人| 77777亚洲午夜久久多人| 亚洲自拍偷拍网址| 日韩亚洲国产中文字幕| 色偷偷噜噜噜亚洲男人的天堂| 国产精品免费久久久| 日韩在线观看免费网站| 97在线免费观看视频| 亚洲女人天堂视频| 91成人国产在线观看| 最近2019年中文视频免费在线观看| 成人免费看片视频| 亚洲精品成人久久| 国产精品久久久久aaaa九色| 国产精品国产三级国产aⅴ浪潮| 亚洲女人被黑人巨大进入| 97国产精品久久| 中文字幕日韩免费视频| 精品欧美一区二区三区| 亚洲石原莉奈一区二区在线观看| 亚洲人成绝费网站色www| 欧美亚洲国产日韩2020| 91在线观看免费网站| 55夜色66夜色国产精品视频| 亚洲黄色www网站| 欧美性videos高清精品| 亚洲精选中文字幕| 日韩大陆毛片av| 欧美极度另类性三渗透| 国产免费一区二区三区香蕉精| 欧美激情视频三区| 日本高清不卡的在线| 久久人91精品久久久久久不卡| 中文字幕综合一区| 亚洲男女自偷自拍图片另类| 久久综合久久美利坚合众国| 91在线观看免费高清完整版在线观看| 欧美情侣性视频| 中文字幕一区二区三区电影| 欧美日韩性视频在线| 欧美极品在线播放| 久久精品人人做人人爽| 亚洲精品久久久久久久久久久| 亚洲精品乱码久久久久久金桔影视| 人九九综合九九宗合| 欧美丝袜一区二区| 国产精品91在线观看| 美女福利视频一区| www.久久久久久.com| 久久成人一区二区| 亚洲欧美国产制服动漫| 91久久久久久久一区二区| 一本一本久久a久久精品综合小说| 性欧美xxxx交| 亚洲国产精品99久久| 久久久精品一区| 精品视频久久久久久久| 久久成人在线视频| 亚洲精品资源美女情侣酒店| 粗暴蹂躏中文一区二区三区| 亚洲精品国产成人| 国产热re99久久6国产精品| 91免费看片在线| 久久影视电视剧免费网站清宫辞电视| 欧美电影免费观看| 日韩国产在线看| 中文字幕亚洲无线码a| 国产成人97精品免费看片| 91在线中文字幕| 92国产精品久久久久首页| 91高清免费在线观看| 亚洲天堂精品在线| 国产精品久久网| 亚洲在线一区二区| 啪一啪鲁一鲁2019在线视频| 在线日韩第一页| 成人乱色短篇合集| 97av在线视频免费播放| 中文欧美日本在线资源| 在线观看日韩专区| 国产精品成人免费视频| 国产一区二区三区18| 欧美午夜xxx| 国产日韩欧美影视| 国产97在线视频| 亚洲欧美日韩区| 国产精品人人做人人爽| 久久精品福利视频| 国产成人精彩在线视频九色| 欧美日韩性视频在线| 久久久久久久91| 国产精品都在这里| 精品国产一区二区三区在线观看| 精品久久久久久久大神国产| 国产91在线播放九色快色| 亚洲成avwww人| 亚洲欧洲日产国码av系列天堂| 欧美专区日韩视频| 97色在线视频| 欧美猛少妇色xxxxx| 欧美电影免费观看大全|