扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
学习写正则表达式主要是学习理论,但是理论学习与现实事物比起来难免会有些差别。在这两个活动中,理论和实践都存在着很大的差异,最好的学习方法就是做。
比如说,你想知道你工作的时候需要什么;先试试这个工具,观察一下它会发生什么,不是更好吗?也许这就是为什么当我发现免费的正则表达式开发工具的时候,我会对它产生浓厚兴趣的原因了,Expresso。
最初,Expresso是测试正则表达式的开发工具。然而,现在它不仅仅用在正则表达式上,现在它可能正在尝试一些不附带任何条件的事情。大家现在想不想知道它是如何工作的呢?让我们针对不同的对象来试试它吧。
就像骑自行车
你肯定不会忘记第一次写正则表达式的情景,也许年代久远,很多事情已经模糊了,但是你却总不能忘怀。然而,可能大家对一些事情没有经验,我建议大家看看表A,它会让你熟悉一下这些语法的。
表 A
正则表达式语法
模式匹配
正则表达式用于模式匹配,也就是当文本框的内容与一个模式匹配的之后就执行某些操作。当找到匹配的时候就执行操作,这些操作可以从仅仅标志找到了某个匹配到隔离这些匹配并用其它内容来替代这些匹配的文本框。让我们使用文本框来探讨一下某些可能性,如Listing A所示。
Listing A
文本示例(摘自Edgar Allen Poe的The Raven)
Once upon a midnight dreary, while I pondered weak and weary,
Over many a quaint and curious volume of forgotten lore,
While I nodded, nearly napping, suddenly there came a tapping,
As of some one gently rapping, rapping at my chamber door.
`'Tis some visitor,' I muttered, `tapping at my chamber door -
Only this, and nothing more.'
Ah, distinctly I remember it was in the bleak December,
And each separate dying ember wrought its ghost upon the floor.
Eagerly I wished the morrow; - vainly I had sought to borrow
From my books surcease of sorrow - sorrow for the lost Lenore -
For the rare and radiant maiden whom the angels named Lenore -
Nameless here for evermore.
在这里,我们感兴趣的是“Lenore”这个名字在上面文本中所出现的次数。正则表达式可以对“Lenore”进行非敏感测试或者对“Lenore”进行敏感测试。当我在某个主题中时,我就可以在Options标签(如图A所示)中将选项设置成使用复选框。
图 A
规范的正则表达式标签
当Options标签有替代字符串标签(Replacement String tab)时,使用同样的步骤,替代字符串标签如图B所示。
图 B
正则表达式替代字符串标签
当然大部分正则表达式并不一定拼写准确,大家可以考虑一下美国ZIP编码(邮政编码)。它可接受的格式是五个阿拉伯数字,或者是五个阿拉伯数字、破折号、四个阿拉伯数字。所以测试字符串只能是ZIP编码,我们有一个模式对应于五个阿拉伯数字,那就是“^\d{5}$”,还有一个模式对应于第二种格式,那就是“^\d{5}-\d{4}$”,它对应于9个阿拉伯数字。把这两个表达式合在一起,我们得到了“^\d{5}(-\d{4}$)?”,这样我们的工作就完成了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者