Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
python正则表达式:不给它匹配的组_Python_Regex - Fatal编程技术网

python正则表达式:不给它匹配的组

python正则表达式:不给它匹配的组,python,regex,Python,Regex,这是模式 pattern_strings = ['\\xc2d', '\\xa0', '\\xe7', '\\xc3\\ufffdd', '\\xc2\\xa0', '\\xc3\\xa7', '\\xa0\\xa0', '\\xc2', '\\xe9'] join_pattern = '[' + '|'.join(pattern_strings) + ']' pattern = re.compile(join_pattern) 下面是函数 def find_pattern(path):

这是模式

pattern_strings = ['\\xc2d', '\\xa0', '\\xe7', '\\xc3\\ufffdd', '\\xc2\\xa0', '\\xc3\\xa7', '\\xa0\\xa0', '\\xc2', '\\xe9']
join_pattern =  '[' + '|'.join(pattern_strings) + ']'
pattern = re.compile(join_pattern)
下面是函数

def find_pattern(path):
    with open(path, 'r') as f:
        for line in f:
            # print line
            found = pattern.search(line)
            if found:
                print dir(found)
                logging.info('found in line - ' + line)
                logging.info('found - ' + str(found.group(0)))
这是输入

\xc2d 
d\xa0 
\xe7 
\xc3\ufffdd 
\xc3\ufffdd 
\xc2\xa0 
\xc3\xa7 
\xa0\xa0 
'619d813\xa03697' 
当我运行这个程序时,我得到的输出是

INFO:root:found in line - \xc2d 

INFO:root:found - d
INFO:root:found in line - d\xa0 

INFO:root:found - d
INFO:root:found in line - \xc3\ufffdd 

INFO:root:found - u
INFO:root:found in line - \xc3\ufffdd 

INFO:root:found - u
INFO:root:found in line - '619d813\xa03697' 

INFO:root:found - d
问题 -为什么它不像
\xc2d
那样告诉整个模式?我在这里做错什么了吗? -我需要做什么才能得到匹配的模式,比如
\xc2d
,而不是
d

更新

更改为
join_pattern='('+'|'.join(pattern_strings)+')
与任何内容都不匹配

更新1

pattern_strings = ['\\xc2d', '\\xa0', '\\xe7', '\\xc3\\ufffdd', '\\xc2\\xa0', '\\xc3\\xa7', '\\xa0\\xa0', '\\xc2', '\\xe9']

join_pattern =   '|'.join(pattern_strings)
pattern = re.compile(join_pattern)

这与输入中的任何内容都不匹配:(

问题是您用方括号括住了正则表达式,
[]
。这表示一组字符;即,
[abc|def]
将与
a
b
c
|
d
e
f
中的一个匹配。对于正则表达式,不需要括号。如果这是较大表达式的一部分,可以使用圆括号
()
表示一个组,该组将正则表达式的一部分组合在一起。(它也是一个捕获组,因此可以使用
访问其内容。

re
中的方括号表示一个集

join_pattern='['+'|'。join(pattern_strings)+']
使正则表达式匹配“在
{\x c 2 d a 0 e 7 3 u f 9}
中的任何一个字符集”。这可能不是您想要的行为。对于要使用的表达式:

join_pattern = '|'.join(pattern_strings)

不需要括号,除非您试图指定捕获/非捕获组。

我猜您试图匹配
模式中的一个字符串
?不要将正则表达式封装在方括号中。这表示一个集合。为什么人们经常将答案作为注释发布?您的问题是
[
]
在您的模式中-删除它们!@AbeKarplus-因为答案应该是复杂的,否则它只是简单的comment@cdarke-为什么?不需要。只是为了去掉方括号-就是这样!