有些时候我们需要在文本的特定位置匹配数据,比如在行开头,结尾匹配文本。
锚点
正则表达式定义了一些特殊字符表示文本中的位置,称作锚点,锚点匹配文本中的某个位置但不消耗字符。这些特殊字符包括
锚点 | 含义 |
---|---|
^ | 行开头 |
A | 行开头 |
Z | 行结尾 |
$ | 行结尾 |
b | 单词边界 |
下面的正则表达式是将行首的From
修改成FROM
。
$content =~ s/^From/FROM/g;
正则表达式^From$
匹配只有From
单词的行。
正则表达式bFromb
匹配单词From
,而不匹配Fromal
之类的单词。
环视
除了上述的预定义的位置,正则表达式也可以自定义位置规则,这称作环视(lookaround),
环视也不占用任何字符,只匹配文本中的特定位置。环视的种类如下:
环视 | 含义 |
---|---|
(?=abc) | 当前位置的右侧是 |
(?!abc) | 当前位置的右侧不是 |
(?<=abc) | 当前位置的左侧是 |
(?!=abc) | 当前位置的左侧不是 |
例如(?<=abc)de
匹配字符串abcde
中的de
,而不会匹配ade
中的de
。