タイトル:マッチングと「*」正規表現のための機能を備えた実装「」。モード文字が「」 『*』任意の1つの文字を表し前の文字が(0時間を含む)任意の回数現れることができることを示しています。
デフ(文字列、パターン)re_match: lenの場合(文字列)== 0とlen(パターン)== 0: Trueを返す !場合LEN(文字列)= 0とlen(パターン)== 0または(LEN(文字列)= = 0とlen(パターン)= 0):! Falseを返す (パターン)lenの場合> 1とパターン[1] == '*': パターンであれば[0] ==文字列[0]または(パターン[0] = =とLEN(文字列)= 0) '': リターンre_match(文字列[1]、パターン[2])またはre_match(文字列[1]、パターン)またはre_match(文字列、パターン[2] ) それ以外: リターンre_match(文字列、パターン[2:]) の場合、文字列[0] ==パターン[0]または(パターン[0] ==とlen(文字列'')= 0):! リターンre_match(文字列[1]、パターン[1])は 偽を返します
注意:
再帰的には、終了条件は次のとおりです。同時に、文字列のパターン文字列とは、最後に到達した場合、それは、マッチングを示しtrueを返し、あなたが同時に到着しない場合は、Falseが返されます。
モード、文字列がトラバースされる場合に、再帰的に文字列と次のビット列パターンを横切る「」;やや複雑に 『*』を横断する場合、必要と判断された 『*』文字列は、前者か同じですそうでない場合は、パターン文字列をスキップ「*」、次のトラバースは、同じ場合は、3例の再帰を持つことになり、「*」の時間、複数のマッチング、試合0と一致します。