Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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,我试图理解积极和消极的前景,但我认为我遗漏了一些东西 q(?=u) 我理解这个正则表达式的意思是:“匹配一个后跟u的q”,所以我得到一个字符串为“quit”的匹配,但得到的只是一个带有“q”的组 但是对于正则表达式q(?=u)i,我不会用字符串“quit”得到任何结果。为什么会发生这种情况?也许这个正则表达式没有意义,但我想知道它的意思是什么,以便理解lookahead。lookahead不使用它的文本qu不同于q(?=u)——后者只匹配q,但要求它后跟u(但不捕获或使用) 这就是为什么q(

我试图理解积极和消极的前景,但我认为我遗漏了一些东西

q(?=u) 
我理解这个正则表达式的意思是:“匹配一个后跟u的q”,所以我得到一个字符串为“quit”的匹配,但得到的只是一个带有“q”的组


但是对于正则表达式q(?=u)i,我不会用字符串“quit”得到任何结果。为什么会发生这种情况?也许这个正则表达式没有意义,但我想知道它的意思是什么,以便理解lookahead。

lookahead不使用它的文本
qu
不同于
q(?=u)
——后者只匹配
q
,但要求它后跟
u
(但不捕获或使用)

这就是为什么
q(?=u)i
不能匹配的原因-
q
后面需要同时跟
u
i
,这是不可能的。换句话说,它将发现并捕获
qi
,但前提是
q
后面紧跟
u
,如果后面紧跟
i
,这显然是不正确的


如果要匹配
qui
,则其正则表达式为
qui

先行不使用其文本
qu
不同于
q(?=u)
——后者只匹配
q
,但要求它后跟
u
(但不捕获或使用)

这就是为什么
q(?=u)i
不能匹配的原因-
q
后面需要同时跟
u
i
,这是不可能的。换句话说,它将发现并捕获
qi
,但前提是
q
后面紧跟
u
,如果后面紧跟
i
,这显然是不正确的


如果要匹配
qui
,如果要匹配后面没有其他内容的内容,则必须使用正则表达式
qui

。在解释字符类时,本教程解释了为什么不能使用求反字符类来匹配后跟u的q。负前瞻提供了解决方案:q(?!u)。负先行结构是一对括号,左括号后跟问号和感叹号。在前瞻中,我们有一个微不足道的正则表达式u

积极前瞻的工作原理是一样的。q(?=u)匹配后跟u的q,而不使u成为匹配的一部分。正向先行结构是一对圆括号,左括号后面跟一个问号和一个等号


如果要匹配某个内容,而不是后面跟着其他内容,则必须进行负前瞻。在解释字符类时,本教程解释了为什么不能使用求反字符类来匹配后跟u的q。负前瞻提供了解决方案:q(?!u)。负先行结构是一对括号,左括号后跟问号和感叹号。在前瞻中,我们有一个微不足道的正则表达式u

积极前瞻的工作原理是一样的。q(?=u)匹配后跟u的q,而不使u成为匹配的一部分。正向先行结构是一对圆括号,左括号后面跟一个问号和一个等号