有些时候我们需要在文本的特定位置匹配数据,比如在行开头,结尾匹配文本。
锚点
正则表达式定义了一些特殊字符表示文本中的位置,称作锚点,锚点匹配文本中的某个位置但不消耗字符。这些特殊字符包括
锚点 | 含义 |
|---|---|
^ | 行开头 |
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。


