返回介绍

7.2 用 *、+ 和 ? 进行匹配

发布于 2024-01-20 21:40:46 字数 1034 浏览 0 评论 0 收藏 0

如果你在Reggy中输入了前面的数字,现在就可以开始测试了。首先使用Kleene星号,这一命名是为了纪念正则表达式的发明人Stephen Kleene。如果像下面这样在点号之后使用星号:

.*

它将会以贪心的方式匹配主文本中的所有字符(数字)。如前所述,.*匹配任何字符零次或多次。下方文本框中的所有数字都会以另一种颜色高亮显示。一本早期手册对Kleene星号的描述如下:

正则表达式后跟一个“*”(Kleene星号)表示该正则表达式所匹配的文本接连出现任意次(包括零次)。

现在试一下:

9*

底部数字9的那一行就会被标亮。现在再试一下:

9.*

这就会将包含数字9的行和下面的包含数字0的行标亮。因为勾选了Multiline选项(在应用程序窗口底部),点号会匹配行之间的换行符;正常情况下,它不会匹配换行符。

要匹配一个或多个9,尝试:

9+

跟前面有什么不同呢?暂时看不出来,因为在主文本中有九个9。主要的区别是+会寻找至少一个9,而*会寻找零个或多个9。

要匹配零次或一次(可选),可使用:

9?

这只会匹配第一次出现的9。这个数字9是可选的,由于它存在于主文本中,所以它会匹配并被标亮。如果用下面这个表达式:

99?

则第一个9和第二个9都会匹配。

表7-1列出了基本的量词以及它们的一些可能的作用。这些量词默认是贪心的,这意味它们在第一次尝试时会尽可能多地匹配字符。

表7-1 基本量词

语法

描述

?

零个或一个(可选)

+

一个或多个

*

零个或多个

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文