正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置
今天要用正则表达式实现匹配一个词出现一次或者不出现的情况,但是又不仅仅是这么简单的需求。先详细说下我这种情况吧,也许有人也遇到这种情况但是没找办法的时候可以参考一下。
前言
如果对正则表达式基本用法还不太熟悉的同学,可以参考下菜鸟教程上正则表达式的简单教程摸我直达。
示例
例如打开一个应用。字符串可能是“open the qq”,“open qq”。“qq”是我想要得到的内容,但是这个“the”怎么办呢。
尝试一
一开始我是这么想的,把正则表达式写成这样“open the? ([A-Za-z]+[0-9]*)”
显然这是不行的,不然我也不会写这博客了(刚开始用正则表达式,所以大家别笑我这样去试,哈哈),这样只会匹配“the”中的“e”。
尝试二
我又写了一个这样的“open (the)? ([A-Za-z]+[0-9]*)”,然后这样也是没办法满足我的需求的,因为这样我通过捕获组并不能正常的得到类似“qq”这样的应用名。因为“(the)?”也会被当成捕获组干扰结果。此时的我非常头大,怎么办呢怎么办呢。然后我又好好看了下菜鸟教程上正则表达式的各种语法。发现了下面这个语法。这简直就是专门为我这种情况准备的啊,既可以匹配单词,又能让他不占据捕获组的位置。
尝试三
然后我就进行