Skip to content

无法理解正则表达式附录的eliza模块中的匹配规则 #1514

@pyz610173878

Description

@pyz610173878

大致了解并练习了本章节的主要语法与用法,打算尝试理解eliza模块。我的思路,直接从头阅读源代码。

但以下代码,尝试简化并拆分。但还是无法理解。
代码如下:

self.keys = list(
map( lambda x: re.compile(x[0],  re.IGNORECASE), gPats))

list函数中嵌套着map函数,其中函数为lambda表达式,参数x,匹配规则为参数x + 集合原子[0]。re.IGNORECASE我查了一下,这个标志允许正则表达式与给定的字符串进行不区分大小写的匹配。

gPats为可迭代对象,以下是gPats具体的值。

gPats = [r'I need (.*)',
  [  "Why do you need %1?",
    "Would it really help you to get %1?",
    "Are you sure you need %1?"]],

老师这一整个嵌套的列套是一个整体的匹配规则吗?
还是说,在逗号分隔的地方为一个匹配规则。我也尝试把此规则放进regex101,但还是不能理解,希望老师给点线索。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions