2023 © RegexOne
邮箱 | Twitter
到目前为止,我们编写的正则表达式都是部分匹配文本中的片段。有时这并不理想,例如,假设我们想在一个日志文件中匹配单词“success”。我们当然不希望该模式匹配包含“Error: unsuccessful operation”的行!这就是为什么通常最佳实践是编写尽可能具体的正则表达式,以确保我们在匹配实际文本时不会出现误报。
收紧模式的一种方法是定义一个模式,该模式使用特殊的^(脱字符号)和$(美元符号)元字符来描述行首和行尾。在上面的示例中,我们可以使用模式^success来仅匹配以单词“success”开头的行,而不是“Error: unsuccessful operation”行。如果你同时使用脱字符号和美元符号,则会创建一个模式,该模式完全匹配行首和行尾的整行。
请注意,这与在括号集中[^...]中用于排除字符的脱字符号不同,这在阅读正则表达式时可能会令人困惑。
尝试使用这些新的特殊字符匹配下面每个字符串。
任务 | 文本 | |
匹配 | Mission: successful | |
跳过 | Last Mission: unsuccessful | |
跳过 | Next Mission: successful upon capture of target |
解答 | 表达式“Mission: successful”将在文本中的任何位置匹配,因此我们需要在表达式^Mission: successful$中使用起始和结束锚点,以仅匹配以“Mission”开头并以“successful”结尾的完整字符串。 |