#content-region{background-image:url(http://p.blog.csdn.net/images/p_blog_csdn_net/rcom10002/EntryImages/20081027/watermark.gif);}#content-regionh3{border:1pxdotted#333333;background-color:#f9f9f9;padding:10px;font-size:24p" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

簡(jiǎn)單入門正則表達(dá)式 - 第六章 元字符與修飾符

系統(tǒng) 1934 0
<style> #content-region { background-image: url(http://p.blog.csdn.net/images/p_blog_csdn_net/rcom10002/EntryImages/20081027/watermark.gif); } #content-region h3 { border: 1px dotted #333333; background-color: #f9f9f9; padding: 10px; font-size: 24px; } #content-region p { font-family: "宋體", "仿宋"; font-size: 16px; line-height: 28px; text-decoration: none; text-indent: 32px; } #content-region .regex-pattern { font-style: oblique; font-family: "Courier New", Courier, monospace; background-color: #FFCCCC; border-top-style: solid; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-top-color: #FF0000; border-bottom-color: #FF0000; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-color: #FF0000; border-left-color: #FF0000; padding: 0px 5px 0px 5px; } #content-region .regex-result { font-family: "Courier New", Courier, monospace; background-color: #A4FFE1; border-top-style: solid; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-top-color: #339966; border-bottom-color: #339966; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-color: #339966; border-left-color: #339966; padding: 0px 5px 0px 5px; } #content-region blockquote { padding: 10px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; width: auto; } #content-region img { border: 1px dotted #000000; padding: 16px; background-color: #f9f9f9; margin-top: 16px; margin-right: 16px; margin-bottom: 16px; margin-left: 64px; } #content-region code { white-space: pre; } </style>

一、使用轉(zhuǎn)義

在接觸元字符之前,理解好正則表達(dá)式中的轉(zhuǎn)義是非常重要的。在前面的幾章中,我們或多或少接觸了一些關(guān)于轉(zhuǎn)義的內(nèi)容,在這里,我們?cè)僭敿?xì)地研究一下正則表達(dá)式中的轉(zhuǎn)義。

正則表達(dá)式中的元字符是具有特定含義的字符。例如“.”,它能夠與除了換行符之外的任意字符相匹配;與之類似的還有“?”,表示參與匹配的樣式重復(fù)零次或一次。既然它們都被賦予了特殊的含義,那么它們就不能再用來(lái)與自身相同的普通字符進(jìn)行匹配了,例如“.”、“)”和“[”就不能直接作為匹配字符而直接使用。

      	var myArray = new Array();
	...
	if (myArray[0] == 0) {
	...
	}
	
    

對(duì)于上面的JavaScript代碼,我們用正則表達(dá)式 myArray[0] 來(lái)匹配數(shù)組元素myArray[0],但是結(jié)果并不像我們預(yù)想的那樣,這是因?yàn)? [0] 在正則表達(dá)式中是作為字符集合的含義出現(xiàn),匹配的內(nèi)容是“0”,而不是“[0]”。所以,正則表達(dá)式 myArray[0] 真正匹配的內(nèi)容是“myArray0”,而不是我們想要的“myArray[0]”。

既然這樣,我們換一個(gè)含有轉(zhuǎn)義功能的正則表達(dá)式 myArray/[0/] 再來(lái)做一次試驗(yàn),這次成功匹配了。

簡(jiǎn)單入門正則表達(dá)式 - 第六章 元字符與修飾符

“/”是具有轉(zhuǎn)義作用的元字符,既然是元字符,就不能跟字符“/”相匹配了,但“/”的功能不光是對(duì)其他元字符進(jìn)行轉(zhuǎn)移,就連它自身也可以進(jìn)行轉(zhuǎn)移,所以, // 就能和字符“/”相匹配。字符串“C:/WINDOWS”對(duì)應(yīng)的正則表達(dá)式就應(yīng)該是 C://WINDOWS

二、元字符

正則表達(dá)式中的原字符分為兩大類,一種是參與文本匹配的,比如“.”,另外一種是作為正則表達(dá)式語(yǔ)法的一部分而存在,如“?”,“[”和“]”。在實(shí)際的應(yīng)用中,我們將發(fā)現(xiàn)有很多這樣的原字符,它們是以“空白”元字符開頭的。在這里,我們簡(jiǎn)紹幾個(gè)常用的正則表達(dá)式元字符。

  • /w

    “/w”只能匹配英文字母、數(shù)字和下劃線。因此,它與元字符“.”并不相同,因?yàn)椤?w”不能夠與符號(hào)、標(biāo)點(diǎn)相匹配。在有些非英語(yǔ)的語(yǔ)言中,“/w”的解釋有所不同,它可以與被設(shè)置的語(yǔ)言的文字或字母相匹配。如果“/w”的關(guān)聯(lián)文是 Unicode 而非 ASCII,那么它能夠匹配到的范圍就更為廣泛了。

    現(xiàn)在讓我們看看“/w”的功能,首先構(gòu)造正則表達(dá)式 /w+ ,然后把字符串“Hello World! 世界你好!”作為測(cè)試對(duì)象,匹配的結(jié)果就是“ Hello World ! 世界你好 !”

  • /W

    “/W”與“/w”匹配的內(nèi)容相反,只要是/w無(wú)法匹配的內(nèi)容,它都能夠進(jìn)行匹配。也就是說(shuō),/W能夠匹配那些非字母、數(shù)字和下劃線的內(nèi)容。但匹配內(nèi)容也不是絕對(duì)的,還要根據(jù)所使用的具體正則引擎而定。

    我們同樣以“Hello World! 世界你好!”為例,利用正則表達(dá)式 /W+ 匹配的結(jié)果就是“Hello World ! 世界你好 ”。

  • /d

    “/d”能夠與數(shù)字相匹配,相當(dāng)于[0-9]的縮寫。

    再回顧一下前章電話號(hào)碼校驗(yàn)的例子,要匹配的字符串為“+086-800-800-8888”,之前構(gòu)造出來(lái)的正則表達(dá)式是 /+?[0123456789]{2,3}-[0123456789]{3}-[0123456789]{3}-[0123456789]{4} ,而有了/d,我們就可以把它簡(jiǎn)化為/+?/d{2,3}-/d{3}-/d{3}-/d{4}。

  • /D

    與“/W”類似,“/d”也有個(gè)與之對(duì)應(yīng)的“/D”,它能與數(shù)字之外的任意字符相匹配。

三、空白與非空白元字符

  • /s

    我們?cè)谶M(jìn)行正則表達(dá)式搜索的時(shí)候,常常會(huì)碰到嵌套在文本里的非打印字符。這些字符有時(shí)會(huì)極大地干擾我們的查找工作,所以最好是先將它們清除掉。元字符“/s”代表了多種非打印字符。

    符號(hào) 含義
    [/b] 退格(Backspace)
    /f 換頁(yè)符
    /n 換行符
    /r 回車符
    /t 水平制表符
    /v 垂直制表符
  • /S

    與“/d”、“/w”類似,也有一個(gè)與“/s”對(duì)應(yīng)的“/S”,它所匹配的內(nèi)容是非空白字符。

四、使用POSIX字符類

在有些正則表達(dá)式引擎中,實(shí)現(xiàn)了一種叫做 POSIX 字符類的特殊功能,POSIX 可以簡(jiǎn)單的看作是常用的字符集合。比如我們常常用 /d 表示 0 至 9 之間的數(shù)字, /s 表示空白字符;而用 POSIX 中的[:alnum:],就能代表正則表達(dá)式[A-Za-z0-9],其中的 alnum 是 alphanumeric 的縮寫。由此可見,POSIX 是采用了命名的方式來(lái)代替使用多個(gè)字符集,這樣不光能為我們構(gòu)造正則表達(dá)式節(jié)省了時(shí)間,而且提供了很大方便。因正則表達(dá)式引擎的不同,所使用的命名方式也有可能不同,這就要求我們?cè)诶?POSIX 方法構(gòu)造正則表達(dá)式之前先了解所使用的引擎支持的正確的 POSIX 格式。

下面我們?cè)?EmEditor 中用 POSIX 做個(gè)小實(shí)驗(yàn)。首先查看幫助,看看在 EmEditor 可以使用什么樣的 POSIX 語(yǔ)法,下表中列出了所有可用的 POSIX 語(yǔ)法。

Character Classes

The following character classes are used within a character set such as "[:classname:]". For instance, "[[:space:]]" is the set of all whitespace characters.

alnum Any alphanumeric character.
alpha Any alphabetical character a-z, A-Z, and other character.
blank Any blank character, either a space or a tab.
cntrl Any control character.
digit Any digit 0-9.
graph Any graphical character.
lower Any lowercase character a-z, and other lowercase character.
print Any printable character.
punct Any punctuation character.
space Any whitespace character.
upper Any uppercase character A-Z, and other uppercase character.
xdigit Any hexadecimal digit character, 0-9, a-f and A-F.
word Any word character - all alphanumeric characters plus the underscore.
unicode Any character whose code is greater than 255.

簡(jiǎn)單入門正則表達(dá)式 - 第六章 元字符與修飾符

從表格中可以看出 [:digit:] 的作用與 [0-9] 完全一樣,所以,當(dāng)從例子的 SQL 語(yǔ)句中查找匹配內(nèi)容時(shí),16 和 24 被成功的匹配。

五、修飾符

在使用正則表達(dá)式時(shí),有時(shí)候我們需要使用一些選項(xiàng)來(lái)控制匹配的模式。比如我們的表達(dá)式是否需要嚴(yán)格地按照字母大小寫來(lái)進(jìn)行匹配;表達(dá)式是否可以按行為單位來(lái)進(jìn)行工作。 大多數(shù)支持正則表達(dá)式的編輯器都會(huì)提供一個(gè)“是否區(qū)分大小寫”的選項(xiàng);而在編程語(yǔ)言中,使用正則表達(dá)式功能時(shí)如果沒(méi)有特別指定操作選項(xiàng),結(jié)果都是按行為單位返回的。對(duì)于修飾符的詳細(xì)使用我們會(huì)在后面的應(yīng)用章節(jié)詳細(xì)敘述。

簡(jiǎn)單入門正則表達(dá)式 - 第六章 元字符與修飾符

<!-- InstanceEndEditable -->

簡(jiǎn)單入門正則表達(dá)式 - 第六章 元字符與修飾符


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 启东市| 聂拉木县| 沾化县| 突泉县| 凤山县| 乌兰县| 东乌珠穆沁旗| 扬中市| 西乌| 增城市| 富顺县| 南通市| 年辖:市辖区| 宝坻区| 防城港市| 丰宁| 丰顺县| 江安县| 泰州市| 蕲春县| 玉门市| 法库县| 集安市| 榆中县| 来安县| 湖口县| 北海市| 绵阳市| 广州市| 分宜县| 永定县| 利辛县| 张家口市| 鹿泉市| 澄迈县| 依安县| 崇文区| 老河口市| 吉林省| 台北县| 固始县|