正则表达式 - 如何将列表中的部分元素与 txt 文件中的模式匹配(处理中文字符)

regex - how to match parts of an element in a list to patterns in a txt file(processing chinese characters)

我是 python 和正则表达式的新手,我正在尝试将列表中的部分元素与 txt 文件中的模式相匹配。

下面是一个例子: name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"] pattern = [“杰伦”,“俊杰”] 我想要做的是遍历 name_list 中的每个元素,并比较元素的任何部分是否与模式列表中的模式匹配。例如,在 name_list[0] 中,"俊杰" 匹配模式列表中的第二个模式。

new_list=[] 每当匹配发生时,我想将匹配附加到一个新列表,其顺序与 name_list 中的元素相同。例如,我希望“俊杰”成为new_list中的第一个元素。

此外,我需要从 txt 文件中导入图案。我也不知道该怎么做。 有人可以帮我吗?

只要模式列表只包含文字字符串,您就可以不使用正则表达式来做到这一点,如果情况并非总是如此,您只需将条件 if p in s 更改为 if re.search(p, s) :

def getMatchPattern(patterns, s):
    for p in patterns:
        if p in s:
            return p
    return ''

name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"]
pattern_list = ["杰伦","俊杰"]

result = [getMatchPattern(pattern_list, x) for x in name_list]

请注意,如果一个字符串包含模式列表中的多个字符串,则列表中的第一个字符串获胜(而不是字符串中的第一个)。如果你想改变这种行为,你可以从循环中删除 return,并比较当前成功的 "pattern" 和前一个

之间的子字符串索引。

关于如何读取文件,基本教程or/and稍微搜索一下就会对你有帮助。