Python中检查正则表达式模式是否与字符串匹配的程序

Python中检查正则表达式模式是否与字符串匹配的程序

假设我们有一个字符串s和一个正则表达式模式。我们必须检查给定的模式与给定的字符串是否匹配。正则表达式中有几个规则:

  • 点(period)可以匹配任何单个字符。

  • 星号(asterisk)匹配前面元素的零个或多个。

因此,如果输入是pattern =“h.l*o” s =“hello”,则输出将为True,因为我们有ra然后是一个单个字符。

为了解决这个问题,我们会按照以下步骤进行:

  • n:s的大小

  • m:p的大小

  • 定义一个函数dp(),这将获取i,j

  • 如果j与m相同,则

    • 返回i与n相同
  • 当(i < n且(s [i]与p [j]相同或p [j]与“.”相同))时,match := true,否则为false

  • 如果j + 1 & m且p [j + 1]与“*”相同,则

    • 当dp(i,j + 2)或(match and dp(i + 1,j))时返回true,否则为false
  • 返回match and dp(i + 1,j + 1)

  • 从主方法返回dp(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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程