簡介
本文檔介紹正規表示式(regex)如何工作,以及如何在expressway伺服器中進行測試。
必要條件
需求
思科建議您瞭解以下主題:
- Video Communications Server (VCS)和Expressway伺服器
- Telepresence裝置
- 企業到企業(B2B)呼叫
- 協同合作部署
採用元件
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
規則運算式是字元序列,定義用於比對文字中字串的樣式。然後可以在搜尋規則或轉換上修改或保留這些字串,這是規則運算式最常見的用法。
規則運算式的型別
基本運算式
- 點(.)匹配任意單個字元。
- 數字(\d)匹配任何單個十進位制數字。
- 星號(*)比對上一個字元或運算式的0個或多個重複專案。
- 加號(+)比對上一個字元或運算式的1個或多個重複專案。
- 問號(?)會比對先前字元或運算式的0或1個重複字元。
- 大括弧{n}匹配上一個字元或表達式的n個重複,例如(\d{3})匹配任意3位字串。
- 大括弧範圍{n,m}匹配上一個字元或表達式的n到m個重複,例如,(\d{3,5})匹配任意3、4或5位字串。
- 括弧[...]匹配一組指定字元,這些字元可以單獨指定或在某個範圍內指定,例如,[abc]匹配字元a、b或c。
- 若要指定範圍,請使用範圍開頭與結尾之間的連字型大小(-)字元,例如,[a-z]會符合任何字母字元。
- 在左括弧後面使用脫字元(^)可反轉匹配項,例如,[^a-z]匹配任何非字母字元。
- 括弧(...)將一組相符的字元組成群組。這些群組可在稍後以使用字元\n作為取代字串的一部份來依序參照。
- 管道(|)與一個或替代表達式匹配,例如,(com|net)匹配字串com或net。
其他運算式
- (?!...)這是一個負面展望。 定義不得存在的子表示式。
- %localdomains%匹配伺服器上當前配置的所有SIP域。
建立與測試陣列
Expressway伺服器提供無需更改配置即可測試模式的工具,以避免建立新專案時可能產生的業務影響。
可以在Expressway伺服器的Web介面上找到此工具,導航到維護>工具>檢查模式。
檢查圖樣工具
- 別名:要測試的字串,可以是目的地或註冊統一資源辨識碼(URI)。此字串會與模式字串比較,以測試相符專案。
- 模式型別:此設定決定當檢查模式時,模式字串的處理方式。Regex最常用。
- Exact:整個字串必須完全符合字元的別名字元。
- 字首:字串必須出現在別名的開頭。
- 字尾:字串必須出現在別名的結尾。
- Regex:字串會被視為一般表示式。
- 模式字串:比較別名的模式。
- 模式行為:對模式匹配執行的操作。如果要執行修改,則會啟用新的文字方塊來指定修改。
- 刪除:從別名中刪除匹配的字首或字尾。只有在陣列型別設定為首碼或尾碼時才能使用。
- 保留:未對別名應用任何修改。
- 取代:以取代字串中的文字取代別名的相符部分。
- 新增字首:將其他文字加到別名之前。
- 增加字尾:將附加文本附加到別名。
常用的Regex示例
比對全部萬用字元
當不需要特定模式匹配,但需要考慮搜尋規則或轉換時,此模式被廣泛使用,正規表示式(.*)匹配任何輸入,無論格式或長度如何。點與任何字元相符,而星號為該運算式的任意重複量。
Match Everything萬用字元示例1
無論別名輸入為何,相同模式都會成功。
Match Everything萬用字元示例2
匹配本地和非本地域
這通常用於將模式與伺服器上配置的其中一個本地域的目的地進行匹配,並保持呼叫在本地路由,而不是路由到網際網路。正規表示式%localdomains%可以用作字尾或正規表示式模式的第二部分。
要配置本地域,請導航到配置>域。
本地配置的域
除本地配置的域外,任何域的模式匹配均失敗。
本地域匹配失敗
並且它對於任何本地配置的域都成功。
本地域匹配成功
此模式之前的負面展望(?!.*@%localdomains%)也可以用於相反的結果。這表示非本機網域的任何別名都會成功比對。
本地域的負查詢頭
匹配不同的域擴展
當公司擁有具有多個分機的域並且允許呼叫其中任何一個時,通常使用此模式,但是對於呼叫管理,在考慮搜尋規則之前,需要先將這些模式標準化。
這通常透過使用管道(|)正規表示式進行轉換來完成。
不同網域延伸範例1
相同的模式會與具有兩個域擴展中的任一個的域匹配,但會將它轉換為作為結果選擇的規範化擴展。
不同域擴展示例2
匹配收費欺詐模式
長途電話詐騙呼叫的通用性通常在於撥號的號碼數量,國際電話需要國家代碼,後跟被呼叫的電話號碼,導致這些呼叫至少有7位數字。公司內部撥號計畫的長度通常在4到6位左右。
這就會產生明顯的差異,可用於對其中任一型別的呼叫採取不同的操作。使用數字計數regex ,您可以指定每次呼叫要採取的操作。
數字計數示例1
此模式僅匹配7到15位之間的任何別名。數字越少,則不會產生匹配。
數字計數示例2
除數字以外的任何其它字元也會導致失敗。
數字計數示例3
群組和參照陣列
組和引用與正規表示式模式一起使用來修改別名的一些部分,同時保留其他部分,這在增加或刪除字首或修改域時非常有用。群組是在圖樣字串區段上指定的,參照是在取代字串欄位中按順序完成的。
群組和參照範例1
在本示例中,有一個與@cisco.com匹配的文本,testuri字串與match all regex匹配並分組。
替換字串中的\1引用回撥模式字串中的第一個組,該組連結到URI,而不管URI是什麼,因此URI在結果別名中儲存。
在取代的字串中沒有參照該網域,而是由internaldomain取代,這在結果別名中可見。
組還可用於對URI進行重新排序,因為這允許靈活撥號方案。
群組和參照範例2
在此範例中,別名格式為5位數,後面接著點與另一個數字,後面接著網域。
在模式字串中,可以分別分析不同的組和部分。
- 群組1,模式(\d{5})會比對字串開頭的任意5位數字。
- 規則運算式(\.)符合常值點,這表示原始別名在5個起始數字後需要點。
- 組2,模式(\d)匹配單個數字。
- 第3組,文字模式(@cisco.com)僅與該字元序列匹配,可以進一步修改以包括多個域或前一個匹配之後的任何字串。
當別名與模式字串相符時,動作會使其被取代字串取代。
取代字串會以新順序參照先前的群組。
- 引用\2回撥組2,這是點之後和域之前的單位數。
- 引用\1回撥組1,這是別名的前5位。
- 引用\3回撥組3,這是別名的域部分
- 該點從未被參照,也不屬於任何群組,因此不是結果別名的一部分。
然後別名會產生與原始別名相同的數字,但最初在別名開頭的是點之後的數字。
將5個數字和1個數字分隔開的點不再是別名的一部分,保留該域。
並非每個群組都需要參照,未參照的群組不是結果別名的一部分。
相關資訊
思科技術支援與下載