gpt4 book ai didi

python - 如何在 python 中返回 re.search() 的字符串表示

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:09 25 4
gpt4 key购买 nike

我知道 python 方法中的 [re.search(pattns,text)][1] 采用正则表达式模式和字符串并在字符串中搜索该模式。如果搜索成功,则 search() 返回一个匹配对象,否则返回 None。

然而,我的问题是,我正在尝试使用 OOP(类)来实现它,我想返回匹配结果的字符串表示形式,无论是真还是假或任何其他形式的表示(可读)不是这个 <__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

最佳答案

re.search 的输出返回一个匹配对象。它告诉您正则表达式是否与字符串匹配。

您应该像这样识别要从匹配中检索字符串的组:

if result: 
return result.group(0)

用上面的代码片段替换你代码中的return result

如果你不确定如何group有效,这是来自文档的示例:

>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist") 
>>> m.group(0) # The entire match
'Isaac Newton'
>>> m.group(1) # The first parenthesized subgroup.
'Isaac'
>>> m.group(2) # The second parenthesized subgroup.
'Newton'
>>> m.group(1, 2) # Multiple arguments give us a tuple.
('Isaac', 'Newton')

关于python - 如何在 python 中返回 re.search() 的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50073779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com