2013-02-01 58 views
2

我无法理解这些正则表达式如何工作以及何时使用它们。我还没有在Python网站上找到这些正则表达式的具体例子。我知道SED AWK但没有使用这些类型的正则表达式有无法理解python正则表达式?=

(?=...) 
(?<=...) 
(?(id/name)yes-pattern|no-pattern) 
+0

这些都是在're'文档的[本节](http://docs.python.org/2/library/re.html#regular-expression-syntax)中解释的。 – mgilson

回答

7

(?=...)positive lookahead assertion。它匹配?=在当前位置匹配后的圆括号中的部分,但不会消耗任何匹配字符。例如。正则表达式a(?=b)将匹配a后跟b,但不会返回b作为匹配的一部分。

(?<=...)是一样的,但看一下&#x200a; 后面,即它看起来倒退。同样,它不会消耗任何东西。

(?(id/name)yes-pattern|no-pattern)conditional。如果named groupid/name匹配,则此时字符串必须匹配yes-pattern,否则no-pattern

说实话,虽然这些都是相当先进的功能,我不记得曾经使用过一个条件。查找更常见,但通常受到正则表达式引擎的限制,例如,在许多情况下,只能用固定长度的字符串来完成后视。

+0

感谢好友,我现在明白了 – user2027303

+0

我连接了几次的网站是学习正则表达式的非常好的资源。 – Joey

+0

@Joey:'只能用固定长度的字符串来完成'你的意思是后视?预见性相当于从当前位置开始一个新的匹配,并在预见之内使用正则表达式,这很容易实现。 – nhahtdh