Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式-如何将列表中的元素部分与txt文件中的模式相匹配(处理汉字)_Regex_Python 3.x_Non Ascii Characters - Fatal编程技术网

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

Regex 正则表达式-如何将列表中的元素部分与txt文件中的模式相匹配(处理汉字),regex,python-3.x,non-ascii-characters,Regex,Python 3.x,Non Ascii Characters,我不熟悉python和正则表达式,我正在尝试将列表中的一部分元素与txt文件中的模式相匹配 以下是一个例子: name_list=[”林俊杰","林宥嘉","周杰伦","宋祖英"] 模式=[”杰伦","俊杰"] 我试图做的是循环遍历name_列表中的每个元素,并比较元素的任何部分是否与模式列表中的模式匹配。例如,在name_列表[0]中,”俊杰“与模式列表中的第二个模式匹配 新列表=[] 每当发生匹配时,我都希望将匹配项按与name_list中的元素相同的顺序附加到新列表中。例如,我希望“俊杰“

我不熟悉python和正则表达式,我正在尝试将列表中的一部分元素与txt文件中的模式相匹配

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

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

另外,我需要从一个txt文件导入模式。我也不知道怎么做。
有人能帮我吗?

只要模式列表只包含文字字符串,就可以不使用正则表达式来完成,如果情况并非总是如此,您只需将s中的p更改为if re.search(p,s):

请注意,如果一个字符串包含模式列表中的多个字符串,则列表中的第一个字符串将获胜(而不是字符串中的第一个)。如果要更改此行为,可以从循环中删除
return
,并比较当前成功的“模式”与上一个成功的“模式”之间的子字符串索引


关于如何读取文件,一个基本教程或/和一点搜索将对您有所帮助。

似乎您的模式是固定字符串,您真的需要使用re方法吗?不一定,只要它可以处理中文字符并提供我在尝试运行代码时所需的内容,它就会给我一条错误消息
TypeError:argument'int类型如果s:
@AmandaLiao:你可能错过了什么:嗨,对不起,我仍然收到错误消息。如果我正在运行你编写的代码,你提供的代码可以正常工作。但是当我尝试用我的全名列表和模式列表实现它时,会出现错误。你能看一看吗当事情出错的时候,你会看到哪里吗?谢谢!
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]