第10课:行首和行尾

到目前为止,我们编写的正则表达式都是部分匹配文本中任意部分。但有时候我们并不希望这样。比如,如果我们想在日志文件中匹配单词 "success",我们不希望这个模式去匹配 "Error: unsuccessful operation" 这样的行!因此,在面对真实世界的文本时,要编写尽可能具体的正则表达式,可以有效避免误匹配(false positives)。

一种让正则模式更严格的方法是:使用两个特殊的元字符 ^(脱字符)$(美元符号 分别表示行的开头结尾。以刚才的例子为例,我们可以使用正则表达式 ^success 来只匹配以 "success" 开头的行,而不会匹配 "Error: unsuccessful operation"。如果我们同时使用 ^ 和 $,那么这个模式将只匹配完全等于某个字符串的整行。

请注意:这里的 ^ 跟我们在字符集中使用的 [^...] 是不同的含义。在字符集 [] 中,^ 是用来表示排除某些字符的。这种用法容易混淆,在阅读正则表达式时需要特别留意。

现在请尝试使用这些新的特殊字符来匹配下方的字符串。

练习 10: 匹配行
Task Text  
匹配 Mission: successful To be completed
跳过 Last Mission: unsuccessful To be completed
跳过 Next Mission: successful upon capture of target To be completed
提示

'Mission: successful' 会在文本中的任意位置进行匹配,因此我们需要使用开头和结尾的锚点,也就是在正则表达式中使用 ^Mission: successful$,这样才能只匹配完全等于 "Mission: successful" 的字符串,即以 'Mission' 开头并以 'successful' 结尾的整行文本。

解决上面的问题以继续到, 或者可以参考答案