文心一言利用python实现正则校验

该代码定义了一个名为Pattern的类,用于使用递归方法实现正则表达式的匹配功能。类中有rmatch方法处理*和?的特殊匹配情况,并在主函数中通过实例化Pattern类和调用match方法验证给定的字符串是否符合正则模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在文心一言中,提问用python实现正则校验,代码如下:

#!/usr/bin/python  
# -*- coding: UTF-8 -*-  
 
class Pattern:  
   def __init__(self, regex: str):  
       self.regex = regex  # 正则表达式  
       self.matched = False  
 
   def rmatch(self, r_idx: int, m_idx: int, main: str):  
       if self.matched: return  # 如果已经匹配了,就不要继续递归了  
       if r_idx == len(self.regex):  # 正则表达式到结尾了  
           if m_idx == len(main): self.matched = True  # 文本串也到结尾了  
           return  
       if self.regex[r_idx] == '*':  # *匹配1个或多个任意字符  
           for i in range(m_idx, len(main)):  
               self.rmatch(r_idx + 1, i + 1, main)  
       elif self.regex[r_idx] == '?':  # ? 匹配0个或者1个字符  
           self.rmatch(r_idx + 1, m_idx, main)  
           self.rmatch(r_idx + 1, m_idx + 1, main)  
       elif m_idx < len(main) and self.regex[r_idx] == main[m_idx]:  # 非特殊字符需要精确匹配  
           self.rmatch(r_idx + 1, m_idx + 1, main)  
 
   def match(self, main):  
       self.matched = False  
       self.rmatch(0, 0, main)  
       return self.matched  
 
 
 
if __name__ == '__main__':  
   regex = 'ab*eee?d'  
   main = 'abcdsadfkjlekjoiwjiojieeecd'  
   pattern = Pattern(regex)  
   match = pattern.match(main)  
   print(match)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大表哥汽车人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值