系列中的上一篇
当前教程
字符串字面量
系列中的下一篇

系列中的上一篇: 介绍正则表达式

系列中的下一篇: 字符类

字符串字面量

 

字符串字面量

此 API 支持的最基本形式的模式匹配是字符串字面量的匹配。例如,如果正则表达式是 foo,输入字符串是 foo,则匹配将成功,因为字符串相同。使用测试工具尝试一下

Enter your regex: foo
Enter input string to search: foo
I found the text foo starting at index 0 and ending at index 3.

此匹配成功。请注意,虽然输入字符串长 3 个字符,但起始索引为 0,结束索引为 3。按照惯例,范围包含起始索引,但不包含结束索引,如下图所示

The string literal foo, with numbered cells and index values.

字符串字面量 foo,带有编号的单元格和索引值。

字符串中的每个字符都位于自己的单元格中,索引位置指向每个单元格之间。字符串“foo”从索引 0 开始,到索引 3 结束,即使字符本身只占据单元格 0、1 和 2。

在随后的匹配中,您会注意到一些重叠;下一个匹配的起始索引与上一个匹配的结束索引相同

Enter your regex: foo
Enter input string to search: foofoofoo
I found the text foo starting at index 0 and ending at index 3.
I found the text foo starting at index 3 and ending at index 6.
I found the text foo starting at index 6 and ending at index 9.

 

元字符

此 API 还支持一些特殊字符,这些字符会影响模式匹配的方式。将正则表达式更改为 cat.(注意尾部的点)并将输入字符串更改为 cats。输出将显示如下

Enter your regex: cat.
Enter input string to search: cats
I found the text cats starting at index 0 and ending at index 4.

即使输入字符串中没有点“.”,匹配仍然成功。它成功是因为点是一个元字符——一个由匹配器解释的具有特殊含义的字符。元字符“.”表示“任何字符”,这就是为什么匹配在此示例中成功的原因。

此 API 支持的元字符为:<([{\^-=$!|]})?*+.>

注意:在某些情况下,上面列出的特殊字符将不会被视为元字符。当您进一步了解正则表达式的构造方式时,您将遇到这种情况。但是,您可以使用此列表来检查特定字符是否会被视为元字符。例如,字符 @# 从不具有特殊含义。

有两种方法可以强制将元字符视为普通字符

  • 在元字符前面加上反斜杠,或
  • 将它括在 \Q(开始引号)和 \E(结束引号)中。

使用此技术时,\Q\E 可以放置在表达式中的任何位置,前提是 \Q 位于前面。

在本教程中


上次更新: 2022 年 1 月 10 日


系列中的上一篇
当前教程
字符串字面量
系列中的下一篇

系列中的上一篇: 介绍正则表达式

系列中的下一篇: 字符类