2013-03-05 64 views
0

目前我檢查以下字符串:檢查字符串,正則表達式問題?

if(parseCommand.contains("vlan1") || parseCommand.contains("Fa0/1i") 
    || parseCommand.contains("Fa0/1o") || parseCommand.contains("Fa1/0")        
    || parseCommand.contains("Fa1/1") || parseCommand.contains("Fa1/2") 
    || parseCommand.contains("Fa1/3") || parseCommand.contains("Fa1/4") 
    || parseCommand.contains("Fa1/5") || parseCommand.contains("Fa1/6")          
    || parseCommand.contains("Fa1/7") || parseCommand.contains("Fa1/8") 
    || parseCommand.contains("Fa1/9") || parseCommand.contains("Fa1/11") 
    || parseCommand.contains("Gi0")) { 
//do things here        
} 

但是它可能包含VLAN1高達vlan4094,我必須檢查這些。什麼是最簡單的方法來做到這一點?

我曾經嘗試這樣做只是爲了匹配由0-3位folowed一個VLAN 1-9,但它並沒有發現任何東西:即使我嘗試這個沒有發現

if(parseCommand.matches(".*vlan[1-9](\\d){0,3}") || parseCommand.contains("Fa0/1i") 
    || parseCommand.contains("Fa0/1o")|| parseCommand.contains("Fa1/0")        
    || parseCommand.contains("Fa1/1") || parseCommand.contains("Fa1/2") 
    || parseCommand.contains("Fa1/3") || parseCommand.contains("Fa1/4") 
    || parseCommand.contains("Fa1/5") || parseCommand.contains("Fa1/6")          
    || parseCommand.contains("Fa1/7") || parseCommand.contains("Fa1/8") 
    || parseCommand.contains("Fa1/9") || parseCommand.contains("Fa1/11") 
    || parseCommand.contains("Gi0")) { 

,爲什麼呢?

​​3210)

+1

它應該足夠'vlan [\\ d] {1,4}'我想。你能給一個示例命令來測試嗎? – Raffaele 2013-03-05 10:59:17

+0

你喜歡什麼樣的命令?任何包含vlan1 - vlan4094的字符串,任何可以在 – Paul 2013-03-05 11:00:23

+0

之前或之後出現的東西都可能會丟失。但我不確定你應該在正則表達式中有這些時間段嗎? – 2013-03-05 11:01:27

回答

1

使用.matches("(?s).*vlan.*")左右用於通過.被釣到新行字符;見DOTALL

+0

這個作品謝謝,我不是陛下爲什麼其他答案不工作? – Paul 2013-03-05 11:17:04

+0

然後,您在字符串中有一個換行符'\ n',並且不與'.'匹配。命令'(?s)'也與點\'n'匹配。 – 2013-03-05 11:32:51

+0

我明白了,並且這個換行符是否必須直接在vlan之前或之後纔會影響它,或者會在字符串中的任何位置換行嗎? – Paul 2013-03-05 11:39:11

相關問題