Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
pythonre:没有这样的团体_Python_Regex - Fatal编程技术网

pythonre:没有这样的团体

pythonre:没有这样的团体,python,regex,Python,Regex,我是Python的新手。我不明白为什么这个代码不起作用: reOptions = re.search( "[\s+@twitter\s+(?P<login>\w+):(?P<password>.*?)\s+]", document_text) if reOptions: login = reOptions.group('login') password = reOptions.group('password') reOptions=re.

我是Python的新手。我不明白为什么这个代码不起作用:

reOptions = re.search(
    "[\s+@twitter\s+(?P<login>\w+):(?P<password>.*?)\s+]",
    document_text)
if reOptions:
    login = reOptions.group('login')
    password = reOptions.group('password')
reOptions=re.search(
“[\s+@twitter\s+(?P\w+):(?P.*)\s+]”,
文件(文本)
如果重新选择:
login=reOptions.group('login')
password=reOptions.group('password')
我有一个错误:

IndexError: no such group 索引器:没有这样的组 带文档和文本

Blah-blah [ @twitter va1en0k:somepass ] 废话 [@twitter-va1en0k:somepass]
您需要将括号[和]转义为
\[
\]

\[\s+@twitter\s+(?P<login>\w+):(?P<password>.*?)\s+\]
\[\s+@twitter\s+(?P\w+):(?P.*)\s+\]

[
]
是特殊的正则表达式字符。将它们转义为匹配literal
[
]

看。

哦,谢谢你。但是为什么if之后的语句会执行呢?如何知道是否重新找到了什么?这不是语句无效的问题,只是表达式试图匹配您无意匹配的内容-本质上,您是在尝试匹配[]中的任何字符,而不是您创建的特殊正则表达式构造。你可以说你匹配了一些东西,因为reOptions不是None。您可以使用不带参数的MatchObject.group查看匹配的整个字符串。噢,谢谢。但是为什么if之后的语句会执行呢?如何知道是否重新找到了什么?嗯,它仍然是一个正则表达式。它只匹配[和]之间的任何文字字符。但是登录组和密码组不存在,因此您会收到错误。