文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.2 用 *、+ 和 ? 进行匹配
如果你在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论