### 正则菜单指令编写(简单版本)
~~~
数字:\d
数字长度m-n:\d{m,n}
任意字符:.
空白字符(如空格):\s
匹配次数:零次及以上:*
至少匹配一次:+
示例:
匹配QQ号,一般QQ号的长度为5到12位的数字,则可以用:\d{5,12}
匹配一句话,一句话可以保护任意字符:.+
如何提取指令中的内容:
1.如别人发指令:打劫672441357,如何提取出其中的qq号呢?菜单中的指令可以这么写:打劫(\d{5,12}) 。可以看出指令里多了一个括号,这个括号就表示里面所匹配的内容是我们要提取的,当别人在群里发送:打劫672441357,我们就可以在菜单回复处用$-1来提取这个qq号。($表示提取内容,负号表示提取的内容来自指令,编号1表示提取第一个参数)。
~~~
### 2.你希望群里面发送“打劫672441357”或者“抢劫672441357”都能同时匹配一个指令,如何做?
~~~
正确指令编写:(?:打劫|抢劫)(\d{5,12})
这一步就比较复杂,可以看出“打劫”和“抢劫”用符号|分隔,然后外面套了一个括号,而括号的最前面有个“?:”,前面提到打括号是为了提取出括号里面的内容,而括号里的最前面加上“?:”就表示不提取括号里面的内容。这看起来很矛盾,其实不然。这样做是为了将“打劫”与“抢劫”这两个名词合在一起,表示随便哪一个都可以的意思。
如果你写“打劫|抢劫(\d{5,12})”,这个正则指令会匹配“打劫” 或者 “抢劫672441357”之类的内容。加上括号后就可以匹配:“抢劫672441357”或“打劫672441357”。
~~~