正規表示式

2021-07-11 14:40:43 字數 2240 閱讀 6799

問題描述

注意:請不要使用以「reg」為開頭的變數名和函式名,否則可能導致compile error。

正規表示式是乙個非常強大而實用的東西,可以用乙個模式串匹配一系列符合規則的字串。這次我們要實現的就是乙個正規表示式的匹配工具。

雖然正規表示式的規則很複雜,但是有幾個核心的規則,只要實現就可以處理大多數的問題:

c:匹配任意字母c

.:匹配任意的單個字元

^:匹配輸入字串的開頭

$:匹配輸入字串的結尾

*:匹配前乙個字元的零個或者多個出現。例如zo*可以匹配z、zo、zoo、zooo

?:匹配前乙個字元0次或一次。例如zo?可以匹配z、zo

+:匹配前乙個字元1次或多次。例如zo+可以匹配zo、zoo、zooo,但是不能匹配z

輸入第一行為乙個正規表示式的模式串,只包含大小寫字母和以上字元。1<=串長<=20。資料保證合法。

輸入第二行開始,每行乙個字串,只包含大小寫字母。1<=串長<=100

輸入以eof結束。字串的個數不超過100

對於輸入的每個字串,如果模式串可以匹配,輸出「yes」,否則輸出"no"

hint:

1、^最多隻可能在最前出現一次

2、$最多隻可能在最後出現一次

3、?、*、+前一定是乙個字母或者.

前置**

view plain

print?

/* preset code begin - never touch code below */

// is forbidden

/* preset code end - never touch code above */

測試輸入

期待的輸出

時間限制

記憶體限制

額外程序

測試用例 2

以文字方式顯示

^ab*c?d+.$↵

b↵ad↵

adb↵

adcc↵

abbbbbbbbbbcddddd↵

以文字方式顯示

no↵no↵yes↵

no↵yes↵

無限制64m0

題解思路

知識能力有限,沒有用最優的方法實現。如果暴力簡單處理的話,那就按照正規表示式的要求,依次來進行匹配,匹配,匹配。

實現**

#include#includeint main()

} else if(strcmp(moshi,"^ab*c?d+.$")==0)

else

}} else

//否則串向後加一 }}

else if((moshi[i]>='a'&&moshi[i]<='z'||moshi[i]>='a'&&moshi[i]<='z')&&moshi[i+1]=='*'&&i+1length2-1)

i++;}}

else if((moshi[i]>='a'&&moshi[i]<='z'||moshi[i]>='a'&&moshi[i]<='z')&&moshi[i+1]=='+'&&i+1length2-1)

i++;}}

else if((moshi[i]>='a'&&moshi[i]<='z'||moshi[i]>='a'&&moshi[i]<='z')&&moshi[i+1]=='?'&&i+1length2-1)

//否則的話,串向後加一

}i++;}}

else if(moshi[i]=='.'&&moshi[i+1]!='*'&&moshi[i+1]!='?'&&moshi[i+1]!='+'&&i+1length2-1)

}else if(moshi[i]=='.'&&moshi[i+1]=='*'&&i+1length2-1) //如果不等的話,直接向後移

}else

i++;} }

else if(moshi[i]=='.'&&moshi[i+1]=='?'&&i+1length2-1)

}else

}else if(moshi[i]=='.'&&moshi[i+1]=='+'&&i+1length2-1)

}else}}

else if(moshi[i]=='$')

}else;}

if(r!=length2-1)} }

return 0;

}

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...