到目前为止,我们编写的正则表达式都是部分匹配文本中任意部分。但有时候我们并不希望这样。比如,如果我们想在日志文件中匹配单词 "success",我们不希望这个模式去匹配 "Error: unsuccessful operation" 这样的行!因此,在面对真实世界的文本时,要编写尽可能具体的正则表达式,可以有效避免误匹配(false positives)。
一种让正则模式更严格的方法是:使用两个特殊的元字符 ^(脱字符)和 $(美元符号 分别表示行的开头和结尾。以刚才的例子为例,我们可以使用正则表达式 ^success 来只匹配以 "success" 开头的行,而不会匹配 "Error: unsuccessful operation"。如果我们同时使用 ^ 和 $,那么这个模式将只匹配完全等于某个字符串的整行。
请注意:这里的 ^ 跟我们在字符集中使用的 [^...] 是不同的含义。在字符集 [] 中,^ 是用来表示排除某些字符的。这种用法容易混淆,在阅读正则表达式时需要特别留意。
现在请尝试使用这些新的特殊字符来匹配下方的字符串。
| Task | Text | |
| 匹配 | Mission: successful | ![]() |
| 跳过 | Last Mission: unsuccessful | ![]() |
| 跳过 | Next Mission: successful upon capture of target | ![]() |
| 提示 | 'Mission: successful' 会在文本中的任意位置进行匹配,因此我们需要使用开头和结尾的锚点,也就是在正则表达式中使用 ^Mission: successful$,这样才能只匹配完全等于 "Mission: successful" 的字符串,即以 'Mission' 开头并以 'successful' 结尾的整行文本。 |