淺析正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作
正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作主要是實(shí)現(xiàn)對(duì)于字符串的開始和結(jié)束的錨定,那么具體的操作過程是什么呢?需要注意什么呢?讓我們看看具體的操作:
錨定和一般的正則表達(dá)式符號(hào)不同,它不匹配任何字符。相反,他們匹配的是字符之前或之后的位置?!癪”匹配一行字符串***個(gè)字符前的位置。<<^a>>將會(huì)匹配字符串“abc”中的a。<<^b>>將不會(huì)匹配“abc”中的任何字符。
類似的,$匹配字符串中***一個(gè)字符的后面的位置。所以<<c$>>匹配“abc”中的c。
◆正則表達(dá)式實(shí)現(xiàn)字符串之錨定的應(yīng)用
在編程語言中校驗(yàn)用戶輸入時(shí),使用錨定是非常重要的。如果你想校驗(yàn)用戶的輸入為整數(shù),用<<^\d+$>>。
用戶輸入中,常常會(huì)有多余的前導(dǎo)空格或結(jié)束空格。你可以用<<^\s*>>和<<\s*$>>來匹配前導(dǎo)空格或結(jié)束空格。
◆正則表達(dá)式實(shí)現(xiàn)字符串之使用“^”和“$”作為行的開始和結(jié)束錨定
如果你有一個(gè)包含了多行的字符串。例如:“first line\n\rsecond line”(其中\(zhòng)n\r表示一個(gè)新行符)。常常需要對(duì)每行分別處理而不是整個(gè)字符串。因此,幾乎所有的正則表達(dá)式引擎都提供一個(gè)選項(xiàng),可以擴(kuò)展這兩種錨定的含義?!癪”可以匹配字串的開始位置(在f之前),以及每一個(gè)新行符的后面位置(在\n\r和s之間)。類似的,$會(huì)匹配字串的結(jié)束位置(***一個(gè)e之后),以及每個(gè)新行符的前面(在e與\n\r之間)。
在.NET中,當(dāng)你使用如下代碼時(shí),將會(huì)定義錨定匹配每一個(gè)新行符的前面和后面位置:Regex.Match("string", "regex", RegexOptions.Multiline)
應(yīng)用:string str = Regex.Replace(Original, "^", "> ", RegexOptions.Multiline)--將會(huì)在每行的行首插入“> ”。
◆正則表達(dá)式實(shí)現(xiàn)字符串之絕對(duì)錨定
<<\A>>只匹配整個(gè)字符串的開始位置,<<\Z>>只匹配整個(gè)字符串的結(jié)束位置。即使你使用了“多行模式”,<<\A>>和<<\Z>>也從不匹配新行符。
即使\Z和$只匹配字符串的結(jié)束位置,仍然有一個(gè)例外的情況。如果字符串以新行符結(jié)束,則\Z和$將會(huì)匹配新行符前面的位置,而不是整個(gè)字符串的***面。這個(gè)“改進(jìn)”是由Perl引進(jìn)的,然后被許多的正則表達(dá)式實(shí)現(xiàn)所遵循,包括Java,.NET等。如果應(yīng)用<<^[a-z]+$>>到“joe\n”,則匹配結(jié)果是“joe”而不是“joe\n”。
正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作的相關(guān)內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作有所幫助。
【編輯推薦】