Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで正規表現パターンが文字列と一致しているかどうかを確認するプログラム


文字列sと正規表現パターンがあるとします。指定されたパターンが指定された文字列と一致するかどうかを確認する必要があります。正規表現には、いくつかのルールがあります-

  • 。 (ピリオド)任意の1文字に一致する

  • *(アスタリスク)前の要素の0個以上に一致します。

したがって、入力がpattern ="h.l * o" s ="hello"のような場合、raと1つの文字があるため、出力はTrueになります

これを解決するには、次の手順に従います-

  • n:=sのサイズ

  • m:=pのサイズ

  • 関数dp()を定義します。これにはi、jが必要です

  • jがmと同じ場合、

    • returniはnと同じです

  • match:=true(i

  • j + 1&mおよびp [j + 1]が「*」と同じである場合、

    • dp(i、j + 2)または(matchおよびdp(i + 1、j))の場合はtrueを返し、それ以外の場合はfalseを返します

  • 一致を返し、dp(i + 1、j + 1)

  • メインメソッドからreturndp(0、0)

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, p, s):
      n = len(s)
      m = len(p)
      def dp(i, j):
         if j == m:
            return i == n
         match = i < n and (s[i] == p[j] or p[j] == ".")
         if j + 1 < m and p[j + 1] == "*":
            return dp(i, j + 2) or (match and dp(i + 1, j))
         return match and dp(i + 1, j + 1)
      return dp(0, 0)
ob = Solution()
pattern = "h.l*o"
s = "hello"
print(ob.solve(pattern, s))

入力

"h.l*o", "hello"

出力

True

  1. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) :    # list of all

  2. 文字列が空かどうかをチェックするPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を入力したら、文字列が空かどうかを確認する必要があります。 Python文字列は本質的に不変であるため、操作を実行するときは、文字列を処理するときに注意が必要です。 ここでは、上記の問題ステートメントを解決するための2つのアプローチについて説明します- len()メソッドを使用します。 等式演算子を使用します。 アプローチ1:len()メソッドを使用する 例 test_str1 = "" test_str2 = "@@@" if(l