如何匹配正则表达式中的文字字符和字符集
什么是正则表达式中的文字字符?
文字字符是可以在测试字符串中显示时匹配的字符。它们可以是字母、数字、空格,甚至是符号。换句话说,它们是代表自己的非特殊字符。
这意味着如果要匹配文字字符,则应以与测试字符串显示相同的方式构造正则表达式模式。
例如,如果要匹配单词 hello
,则正则表达式模式可以是 hello
。如果你想匹配单词 hatch
中的 h
,你只需要作为模式 h
这将 h
匹配测试字符串 h
hatch
中字母的第一次出现。如果您希望它也与其他字母 h
匹配,则需要"g"标志或全局标志。您将在本书的下一章中了解标志和修饰符。
但是,某些符号的情况并非如此。这是因为某些符号是正则表达式(元字符和量词)的特殊字符。因此,如果要匹配这些字符,则必须使用反斜杠 ( \
) 对它们进行转义。这本书还将教你所有你需要知道的关于元角色的知识,因为有一整章关于它们。
如何在正则表达式测试器中匹配文字字符
如果你想匹配单词 hello
,那么 hello
应该是你的正则表达式模式:
如果你想匹配文本 freeCodeCamp
,你可以构造你的正则表达式 freeCodeCamp
为:
如果要匹配文本 freeCodeCamp
中的字母 e
, e
是要使用的模式:
如果您想匹配文本填充中的 h
,则 h
是您应该使用的模式:
您可以看到,在文本中的freeCodeCamp
中,第一个出现后的其他e
没有被返回为匹配项,与单词hatch
中的最后一个h
一样。在下一章中,您将学习如何匹配文本中每个字母的每个出现。
可以在 regex101.com/ 上自行尝试。
字符集匹配
字符集(也称为字符类)是一组字符,可以成功匹配测试字符串中的某个字符。这组字符被括在方括号内。
例如,模式[abc]
将匹配a
、b
和c
中的任何一个,而[xyz]
将匹配x
、y
和z
中的任何一个。
以下是一些字符集示例以及它们的作用:
[abc]
:匹配a
、b
或c
中的任何一个[aeiou]
:匹配任何元音字符[a-z]
:匹配从a
到z
的任何小写字母[A-Z]
:匹配从A
到Z
的任何大写字母[0-9]
:匹配从0
到9
的任何数字
在方括号内,您不需要转义元字符,因为它们失去了特殊含义。唯一在方括号内具有含义的符号是连字符(-
),您可以使用它来指定范围,就像我在一些字符集示例中所做的那样。
您将在本书中了解有关范围的信息。在某些情况下,反斜杠\
在字符集中不会失去其特殊含义。
与文字字符匹配一样,只有字符集的第一个出现会返回为匹配项,其他每个出现都将被忽略。在下一章中,您将学习如何使用g
标志匹配字符的多个出现。
以下是如何在正则表达式测试工具中使用上述每个字符集的示例:
[abc]
: [abc]
:
[aeiou]
: [aeiou]
:
[a-z]
: [a-z]
:
[A-Z]
: [A-Z]
:
[0-9]
: [0-9]
:
您还可以根据需要定义唯一的字符类。当您想要匹配文本中特定位置的某些字符时,字符集非常有用。
例如,模式 br[ao]ke
将同时 brake
匹配和 broke
:
该模式 gr[ae]y
将匹配两者 gray
grey
和:
注意: 我打开了 g
标志,这样你可以看到所有的匹配,以及字符集有多强大。在下一章中,我们将研究 g 和其他标志。
由于编程中总是有多种完成相同任务的方式,也有一些称为"简写字符集"的字符集,您可以使用它们来代替字符集。
由于这些简写字符集是元字符的一个子集,您将在专门介绍元字符的章节中学习有关它们的内容。