发布于 2026-01-06 0 阅读
0

正则表达式速查表速查表,第 1 部分:锚点

正则表达式速查表速查表,第 1 部分:锚点

引言

最近我参加一个面试,需要做一道编程题,题目要求我删除所有非字母字符。“啊!我应该用正则表达式!”我得意地想,甚至觉得自己居然知道正则表达式什么。然而,当我决定复习一下正则表达式,并找到那份名为“正则表达式速查表”的资料时,这种短暂的喜悦瞬间消失殆尽。我完全不知道该怎么用它!

如果你,亲爱的读者,正摇头表示同情,那么这篇文章并不适合你。请离开。对于我们其他人来说,这里有一份正则表达式速查表的精简版,第一部分:锚点。如果大家喜欢,我会继续推出其他类别的版本。

“锚点版”?嗯?

好吧,这份速查表有十一个类别。我连第一个类别“锚点”都勉强看懂,所以这篇博文就只讲“锚点”了。更糟糕的是,列出的八个锚点里,我只搞懂了前五个。或许哪位好心的读者能帮我解惑剩下的三个“家伙”是怎么回事,因为我谷歌了半天也没找到答案。

替代文字

“锚点”究竟是什么?

与其他正则表达式标记不同,锚点并不匹配实际字符。锚点匹配的是字符之前、之后或之间的位置。看完示例你就明白了。

为了演示以下正则表达式,我将使用match()方法,该方法可以检索字符串与正则表达式匹配的结果。

正则表达式的结构

  1. 正斜杠放在两端,像这样:/something/
  2. g在末尾添加“global”以查找所有实例,如下所示: /something/g
  3. 在“多行”中添加m内容,不仅要添加到每个字符串的开头/结尾,还要添加到每行的开头/结尾,例如/“something”/g/“something”。/gm

^字符串的开头,或多行模式中的行的开头
  • ^用于/^The/查找以下内容:狮子咆哮
  • regex101.com上的示例
  • JavaScript 示例:
let sentence = "The lion roared";
let regex = /^The/g;
let found = sentence.match(regex);
console.log(found) // [ 'The' ]
Enter fullscreen mode Exit fullscreen mode

\A字符串的开头
  • \A用于/\A/查找字符串的起始位置(竖线所在的位置):|狮子咆哮
  • regex101.com上的示例
  • JavaScript 示例:
// This doesn't work in Javascript :(
Enter fullscreen mode Exit fullscreen mode

$字符串的结尾,或多行模式中的行的结尾
  • $用于/$/找到字符串的末端(管子所在的位置):狮子咆哮|
  • regex101.com上的示例
  • Javascript 示例
let sentence = "The lion roared";
let regex = /$/;
let found = sentence.match(regex);
console.log(found);
// [ '', index: 15, input: 'The lion roared', groups: undefined ]
Enter fullscreen mode Exit fullscreen mode

\Z字符串的开头
  • \Z用来/\Z/找到弦的末端(管道所在的位置):狮子咆哮|
  • regex101.com上的示例
  • JavaScript 示例:
// This doesn't work in Javascript :(
Enter fullscreen mode Exit fullscreen mode

\b词界
  • \b用于/\b/g查找字符和空格之间的区域,例如管道所在的位置:|| |狮子| |咆哮|
  • regex101.com上的示例
  • JavaScript 示例:
let sentence = "The lion roared";
let regex = /\b/g;
let found = sentence.match(regex);
console.log(found); // [ '', '', '', '', '', '' ]
Enter fullscreen mode Exit fullscreen mode

\B 不是词语边界
  • \B用于查找不匹配/\B/g区域T\b|h|el||o|编号|o|一个|r|e|d
  • regex101.com上的示例
  • JavaScript 示例:
let sentence = "The lion roared";
let regex = /\B/g;
let found = sentence.match(regex);
console.log(found); // [ '', '', '', '', '',
  '', '', '', '', '' ]
Enter fullscreen mode Exit fullscreen mode

笨蛋角

\<词首
\>词尾

这些问题对我来说完全是谜。我在Stack Overflow上发帖求助,结果只得到 (1) 一个 -1 的投票和 (2) 一条评论,链接指向另一个正则表达式速查表(其中没有显示\<`and` )。真是太有用了……\>


出乎意料的是,这篇文章竟然成了我最受欢迎的文章,所以我对其进行了修改,使其更有帮助、解释得更清楚,而且我还会继续写这个系​​列!下一篇是角色职业!

文章来源:https://dev.to/mathlete/cheatsheet-for-the-regular-expressions-cheatsheet-part-1-247f