LeetCode-10. 正規表現マッチング(Python-reパッケージ)

2622 ワード

10.正規表現の一致
タイトルの説明
コミットコード
1つの文字列(s)と1つの文字パターン(p)が与えられる.'.''*'をサポートする正規表現マッチングを実現する.
'.'         。
'*'             。

一致は、文字列の一部ではなく、文字列全体(s)を上書きする必要があります.
説明:
  • sは空であり、a-zからの小文字のみを含むことができる.
  • pは空であり、a-zからの小文字のみを含み、.および*の文字のみを含むことができる.

  • 例1:
      :
    s = "aa"
    p = "a"
      : false
      : "a"      "aa"      。
    

    例2:
      :
    s = "aa"
    p = "a*"
      : true
      : '*'                ,       'a' 。  ,    'a'   ,        "aa"。
    

    例3:
      :
    s = "ab"
    p = ".*"
      : true
      : ".*"           ('*')    ('.')。
    

    例4:
      :
    s = "aab"
    p = "c*a*b"
      : true
      : 'c'       , 'a'        。          "aab"。
    

    例5:
      :
    s = "mississippi"
    p = "mis*is*p*."
      : false

    ワイルドカード照合

    Python
    import re
    class Solution(object):
        def isMatch(self, s, p):
            ans = (re.match(p, s))
            if(ans == None):
                return False;
            if(ans.group(0) != s):
                return False;
            return True;
    
    
    s = Solution()
    print (s.isMatch("ab", ".*c"))

    この問題はPythonのreで包んだのはまるでカンニングのようだ......
    reの4つのマッチング方法を簡単に説明します.
    match
    stringの先頭に一致し、Match objectを正常に返し、失敗したらNoneを返し、1つだけ一致します.
    search
    stringで検索を行い、Match objectを正常に返し、失敗したらNoneを返し、1つだけ一致します.
    findall
    stringで一致したすべてのグループ、すなわちカッコで囲まれた部分を検索します.リストオブジェクトを返します.各リストitemは、一致するすべてのグループからなるリストです.
    finditer
    stringで一致したすべての文字列を検索し、iteratorを返します.各itemはMatch objectです.
    group
    は、条件に一致するすべての文字列をグループ、すなわちgroupにパッケージします.
    ここで、0と番号付けされたgroup、すなわちgroup(0)は、一致する文字列全体を表す.
    他の番号はそれぞれ1,2,3,...であり,一致して返されたグループ内の各文字列を表す.