用?=无法理解python正则表达式

use*_*303 3 python regex

我无法理解这些正则表达式是如何工作的以及何时使用它们.我没有在python网站上找到这些正则表达式的具体例子.我知道sed awk但是没有在那里使用这些类型的正则表达式

(?=...)
(?<=...)
(?(id/name)yes-pattern|no-pattern)
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 9

(?=...)是一个积极的先行断言.如果?=在当前位置的匹配后括号中有部分,则匹配,但不会消耗匹配的任何字符.例如,正则表达式a(?=b)将匹配a a后跟a b,但不会返回b匹配的一部分.

(?<=...)是相同的,但看起来  落后,即它向后看.同样,它不消耗任何东西.

(?(id/name)yes-pattern|no-pattern)有条件的.如果命名组 id/name匹配,则此时字符串必须匹配yes-pattern,否则no-pattern.

说实话,这些是非常先进的功能,我不记得曾经使用过条件.外观更常见,但通常受正则表达式引擎的限制,例如,在许多情况下,只能使用固定长度的字符串进行后观.