我知道在Python中,[re.search(pattns,text)][1]方法需要一个正则表达式模式和一个字符串,并在字符串中搜索该模式。如果搜索成功,search()将返回一个匹配对象,否则返回None。
我的问题是,我想使用面向对象编程(类)来实现这个方法,我想返回匹配结果的字符串表示形式,无论是True还是None或其他可读形式,而不是像<__main__.Expression instance at 0x7f30d0a81440>这样的形式。以下是两个示例类:Student和Epression。使用__str__(self)__函数的那个可以正常工作,但我无法弄清楚如何获取re.search()的表示形式。 请有人帮帮我。
我的问题是,我想使用面向对象编程(类)来实现这个方法,我想返回匹配结果的字符串表示形式,无论是True还是None或其他可读形式,而不是像<__main__.Expression instance at 0x7f30d0a81440>这样的形式。以下是两个示例类:Student和Epression。使用__str__(self)__函数的那个可以正常工作,但我无法弄清楚如何获取re.search()的表示形式。 请有人帮帮我。
import re
class Expression:
def __init__(self,patterns,text):
self.patterns = patterns
self.text = text
def __bool__(self):
# i want to get a readable representation from here
for pattern in self.patterns:
result = re.search(pattern,self.text)
return result
patterns = ['term1','term2','23','ghghg']
text = 'This is a string with term1 23 not ghghg the other'
reg = Expression(patterns,text)
print(reg)
class Student:
def __init__(self, name):
self.name = name
def __str__(self):
# string representation here works fine
result = self.name
return result
# Usage:
s1 = Student('john')
print(s1)
[1]: https://developers.google.com/edu/python/regular-expressions