引言
今天遇到了一个比较棘手的问题,于是终于打算要对正则表达式中的 (?=...)
和 (?<=...)
符号动手了。
正文
(?=...)
表示当 …
匹配时,匹配成功,但不消耗字符串中的任何字符。这个叫做 前视断言 (lookahead assertion)
。比如, Isaac (?=Asimov)
将会匹配 Isaac
,仅当其后紧跟 Asimov
。
在 Python 正则表达式 (…) 符号 一文中,我们说明了为什么要使用 ()
符号以及 ...
符号的含义。事实上,上述的 (?=...)
与 (?<=...)
中的 ...
符号可以被替换为任意的符号,这里为了方便说明问题,我们将 ...
符号替换为 \t
符号。
示例1
import re
str1 = 'abc\tdefghi\txyz'
print(re.search('(?=\t)', str1))
<