我无法理解这些正则表达式是如何工作的以及何时使用它们。我还没有在 python 网站上找到这些正则表达式的具体示例。我知道 sed awk 但在那里没有使用过这些类型的正则表达式
(?=...)
(?<=...)
(?(id/name)yes-pattern|no-pattern)
(?=...)
是一个积极的前瞻断言。如果?=
当前位置匹配后有括号中的部分,则匹配,但不会为匹配消耗任何字符。例如,正则表达式a(?=b)
将匹配 ana
后跟 a b
,但不会将 theb
作为匹配的一部分返回。
(?<=...)
是一样的,但看 后面,即向后看。同样,它不消耗任何东西。
(?(id/name)yes-pattern|no-pattern)
是有条件的。如果命名组 id/name
匹配,则字符串此时必须匹配yes-pattern
,否则no-pattern
.
不过,老实说,这些都是相当高级的功能,我不记得曾经使用过条件。Lookaround 更为常见,但经常受到正则表达式引擎的限制,例如,在许多情况下,lookbehind 只能使用固定长度的字符串来完成。