首先,我知道已經有成千上萬的RegEx帖子,可悲的是我的谷歌/ stackoverflow搜索技能並沒有幫助找到我正在尋找什麼。檢查一個字符串的幾個正則表達式,並說哪一個匹配
我有一個服務器客戶端通信。客戶端等待用戶的輸入。 然後他將它發送到服務器,服務器檢查它是否是有效的命令。
Pattern lowercase = Pattern.compile("LOWERCASE.*");
Pattern uppercase = Pattern.compile("UPPERCASE.*");
Pattern reverse = Pattern.compile("REVERSE.*");
Pattern bye = Pattern.compile("BYE");
Pattern shutdown = Pattern.compile("SHUTDOWN");
如果它從其中一個命令開始,請執行特定操作。 我創建檢查幾種模式匹配器一個問題,然後我想進入像
Matcher.matches(uppercase|reverse|bye|...) //Is this how I do it?
switch(inputString){
case(lowercase): do something
case(reverse): do something else
}
等。 我希望我的要求可以理解。 並且會有多個客戶端與服務器交談,以防與答案相關(例如線程和靜態模式工作不正常或某事)
謝謝。
啊,是的,我覺得這就是我正在尋找的 - 使用第二種方法更快?我想我寧願不使用Pattern.matcher。(表達式).find(),因爲它會被一次又一次地編譯。而第二種方法只編譯一次。 我對此的理解是否正確?我仍然是編程初學者。 – InDaPond
@InDaPond這並不壞,因爲每個模式只會被編譯一次 - 也就是說,當您調用compile()時。但是,會創建多個「Matcher」實例,這可能是次優的。儘管如此,你應該選擇對你更好的方法(也可以選擇對你的代碼進行審查/維護的人)。速度遙遙領先,因爲在系統中花費的大部分時間都是將數據傳遞給服務器並返回。 – dasblinkenlight
我試圖通過聊天與你聯繫,但沒有想法如何。我有一個後續問題,也許你想訪問我在那裏: http://stackoverflow.com/questions/39734233/mulserver-nooby-code-adress-already-in-use-but-it-is - 不是 謝謝! – InDaPond