### 正則菜單指令編寫(簡單版本)
~~~
數字:\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”。
~~~