当前位置:   article > 正文

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

python 接入文心一言

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

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. class Pattern:
  4. def __init__(self, regex: str):
  5. self.regex = regex # 正则表达式
  6. self.matched = False
  7. def rmatch(self, r_idx: int, m_idx: int, main: str):
  8. if self.matched: return # 如果已经匹配了,就不要继续递归了
  9. if r_idx == len(self.regex): # 正则表达式到结尾了
  10. if m_idx == len(main): self.matched = True # 文本串也到结尾了
  11. return
  12. if self.regex[r_idx] == '*': # *匹配1个或多个任意字符
  13. for i in range(m_idx, len(main)):
  14. self.rmatch(r_idx + 1, i + 1, main)
  15. elif self.regex[r_idx] == '?': # ? 匹配0个或者1个字符
  16. self.rmatch(r_idx + 1, m_idx, main)
  17. self.rmatch(r_idx + 1, m_idx + 1, main)
  18. elif m_idx < len(main) and self.regex[r_idx] == main[m_idx]: # 非特殊字符需要精确匹配
  19. self.rmatch(r_idx + 1, m_idx + 1, main)
  20. def match(self, main):
  21. self.matched = False
  22. self.rmatch(0, 0, main)
  23. return self.matched
  24. if __name__ == '__main__':
  25. regex = 'ab*eee?d'
  26. main = 'abcdsadfkjlekjoiwjiojieeecd'
  27. pattern = Pattern(regex)
  28. match = pattern.match(main)
  29. print(match)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/845672
推荐阅读
相关标签
  

闽ICP备14008679号