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

首頁 > 編程 > Ruby > 正文

使用Ruby re模塊創(chuàng)建復(fù)雜的正則表達(dá)式

2020-02-24 15:37:57
字體:
供稿:網(wǎng)友

復(fù)雜的正則表達(dá)式很難構(gòu)造或讀取,Ruby的re模塊可以幫助您用簡(jiǎn)單表達(dá)式構(gòu)建復(fù)雜的正則表達(dá)式,本文將詳細(xì)給大家介紹使用Ruby re模塊創(chuàng)建復(fù)雜的正則表達(dá)式。

例如,考慮下面的匹配日期的正則表達(dá)式:

復(fù)制代碼 代碼如下:
//A((?:19|20)[0-9]{2})[/- //.](0[1-9]|1[012])[/- //.](0[1-9]|[12][0-9]|3[01])/z/


使用Re之后,正則表達(dá)式可以短小易讀的表達(dá)式為基礎(chǔ),一步一步地構(gòu)建出來,例如:

?

?

?


雖然代碼量增加了,但是每個(gè)部分都很短小,也很容易驗(yàn)證。同時(shí),捕獲的部分可以通過相應(yīng)的變量名訪問:

?


注意,用Re構(gòu)建正則表達(dá)式會(huì)很慢,所以推薦創(chuàng)建正則表達(dá)式并復(fù)用。匹配的時(shí)候,性能和原生的正則表達(dá)式很接近。(額外的方法調(diào)用和創(chuàng)建Re::Result以返回匹配結(jié)果影響一點(diǎn)點(diǎn)性能。)如果你需要追求極致的性能,你仍然可以使用Re來構(gòu)建正則表達(dá)式,然后抽取出原始的Ruby Regexp來匹配。這樣的話,性能就和使用原生正則表達(dá)式一樣了。

?

例如,構(gòu)建匹配電話號(hào)碼的正則表達(dá)式:

復(fù)制代碼 代碼如下:

PHONE_RE = re.digit.repeat(3).capture(:area) +
?????????????? re("-") +
?????????????? re.digit.repeat(3).capture(:exchange) +
?????????????? re("-") +
?????????????? re.digit.repeat(4)).capture(:subscriber)


然后抽取出原始的正則對(duì)象,直接使用它來匹配:

?

?

以上就是關(guān)于使用Ruby re模塊創(chuàng)建復(fù)雜的正則表達(dá)式,要想知道更多的技術(shù)知識(shí),大家需要去做多方了解,武林技術(shù)頻道是你的滿意選擇,大家可以放心閱覽。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 高雄县| 封开县| 阿拉善左旗| 漳浦县| 通河县| 蓬莱市| 平谷区| 东兴市| 英山县| 和政县| 衢州市| 揭阳市| 高雄市| 石城县| 白玉县| 襄樊市| 鞍山市| 瓦房店市| 涟源市| 赤壁市| 宁武县| 台南县| 京山县| 方正县| 吴旗县| 鄂州市| 宁陕县| 金华市| 彭州市| 延边| 大城县| 当阳市| 佛冈县| 武汉市| 东台市| 齐齐哈尔市| 永吉县| 宜黄县| 娱乐| 扶余县| 丽水市|