正则表达式速查表速查表,第 1 部分:锚点
引言
最近我参加一个面试,需要做一道编程题,题目要求我删除所有非字母字符。“啊!我应该用正则表达式!”我得意地想,甚至觉得自己居然知道正则表达式是什么。然而,当我决定复习一下正则表达式,并找到那份名为“正则表达式速查表”的资料时,这种短暂的喜悦瞬间消失殆尽。我完全不知道该怎么用它!
如果你,亲爱的读者,正摇头表示同情,那么这篇文章并不适合你。请离开。对于我们其他人来说,这里有一份正则表达式速查表的精简版,第一部分:锚点。如果大家喜欢,我会继续推出其他类别的版本。
“锚点版”?嗯?
好吧,这份速查表有十一个类别。我连第一个类别“锚点”都勉强看懂,所以这篇博文就只讲“锚点”了。更糟糕的是,列出的八个锚点里,我只搞懂了前五个。或许哪位好心的读者能帮我解惑剩下的三个“家伙”是怎么回事,因为我谷歌了半天也没找到答案。
“锚点”究竟是什么?
与其他正则表达式标记不同,锚点并不匹配实际字符。锚点匹配的是字符之前、之后或之间的位置。看完示例你就明白了。
为了演示以下正则表达式,我将使用match()方法,该方法可以检索字符串与正则表达式匹配的结果。
正则表达式的结构
- 正斜杠放在两端,像这样:
/something/ g在末尾添加“global”以查找所有实例,如下所示:/something/g- 在“多行”中添加
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' ]
\A字符串的开头
\A用于/\A/查找字符串的起始位置(竖线所在的位置):|狮子咆哮- regex101.com上的示例
- JavaScript 示例:
// This doesn't work in Javascript :(
$字符串的结尾,或多行模式中的行的结尾
$用于/$/找到字符串的末端(管子所在的位置):狮子咆哮|- 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 ]
\Z字符串的开头
\Z用来/\Z/找到弦的末端(管道所在的位置):狮子咆哮|- regex101.com上的示例
- JavaScript 示例:
// This doesn't work in Javascript :(
\b词界
\b用于/\b/g查找字符和空格之间的区域,例如管道所在的位置:|这| |狮子| |咆哮|- regex101.com上的示例
- JavaScript 示例:
let sentence = "The lion roared";
let regex = /\b/g;
let found = sentence.match(regex);
console.log(found); // [ '', '', '', '', '', '' ]
\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); // [ '', '', '', '', '',
'', '', '', '', '' ]
笨蛋角
\<词首
\>词尾
这些问题对我来说完全是谜。我在Stack Overflow上发帖求助,结果只得到 (1) 一个 -1 的投票和 (2) 一条评论,链接指向另一个正则表达式速查表(其中没有显示\<`and` )。真是太有用了……\>
出乎意料的是,这篇文章竟然成了我最受欢迎的文章,所以我对其进行了修改,使其更有帮助、解释得更清楚,而且我还会继续写这个系列!下一篇是角色职业!
文章来源:https://dev.to/mathlete/cheatsheet-for-the-regular-expressions-cheatsheet-part-1-247f
